GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von grep und sed zum Suchen und Ersetzen einer Zeichenfolge

Sie können find verwenden und -exec direkt in sed statt zuerst oldstr zu suchen mit grep . Es ist vielleicht ein bisschen weniger effizient, aber das ist vielleicht nicht wichtig. Auf diese Weise wird die sed Die Ersetzung wird über alle Dateien ausgeführt, die unter find aufgeführt sind , aber wenn oldstr ist es nicht da, wird es offensichtlich nicht damit arbeiten.

find /path -type f -exec sed -i 's/oldstr/newstr/g' {} \;

Deine Lösung ist in Ordnung. versuche es nur so:

files=$(grep -rl oldstr path) && echo $files | xargs sed....

Führen Sie also xargs aus nur wenn grep 0 zurückgibt , z.B. wenn die Zeichenfolge in einigen Dateien gefunden wird.


Ich habe Vlads Idee genommen und sie ein wenig verändert. Statt

grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g' /dev/null

Was

ergibt
sed: couldn't edit /dev/null: not a regular file

Ich mache in 3 verschiedenen Verbindungen zum Remote-Server

touch deleteme
grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g' ./deleteme
rm deleteme

Obwohl dies weniger elegant ist und 2 weitere Verbindungen zum Server erfordert (vielleicht gibt es eine Möglichkeit, alles in einer Zeile zu erledigen), erledigt es die Arbeit auch effizient


Linux
  1. Verwenden von sed zum Suchen und Ersetzen von Textdateien in Linux

  2. Verwenden von Sed-, Ex- und Perl-Befehlen zum Suchen und Ersetzen eines Textes in Linux

  3. Wie ersetze ich eine Zeichenfolge in einer oder mehreren Dateien?

  4. Testen Sie das rekursive Suchen und Ersetzen von Sed vor dem Ausführen?

  5. Beispiele für Bash-String-Manipulationen – Länge, Teilstring, Suchen und Ersetzen

So finden Sie eine Zeichenfolge in einer Datei unter Linux

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

Finden Sie Text in Dateien unter Linux mit grep

Unix Sed Tutorial:Suchen und Ersetzen von Text in einer Datei mit RegEx

So verwenden Sie Sed zum Suchen und Ersetzen einer Zeichenfolge in einer Datei