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

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

Gibt es eine Möglichkeit, eine rekursive Testsuche auszuführen und mit sed zu ersetzen , bevor Sie es tatsächlich ausführen? Ich möchte nur die Ergebnisse ausdrucken, bevor ich das Suchen und Ersetzen tatsächlich durchführe. So etwas wie das Wiedergeben der Ergebnisse von,

grep -rl term1 . |xargs sed -i -e 's/term1/term2/'

Akzeptierte Antwort:

Sie könnten sed ausführen ohne -i und schrittweise mit less durch die Ausgabe gehen

grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less

Führen Sie dann sed aus mit -i.bak um Backups zu erstellen, die Sie später vergleichen können

grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct

Bearbeiten: Verwenden Sie, wie im Kommentar vorgeschlagen, grep --null | xargs -0 . Dies führt dazu, dass Dateinamen mit dem Null-Byte abgeschlossen werden, was es sicher für Dateinamen mit ungewöhnlichen Zeichen wie Zeilenumbruch macht. Ja, n ist ein gültiges Zeichen in einem Unix-Dateinamen. Die einzigen verbotenen Zeichen sind Schrägstriche / und das Nullzeichen

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

  2. Verwenden von Sed zum Suchen und Ersetzen einer Linie zwischen Musterbereichen

  3. Cut / Grep und Df -h?

  4. Grep und Schwanz -f?

  5. Befehlszeile:Suchen und Ersetzen in allen Dateinamen, die mit grep übereinstimmen

So verwenden Sie sed zum Suchen und Ersetzen von Zeichenfolgen in Dateien

Bearbeiten von Text mit sed und grep

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

MySQL Suchen und Ersetzen

So führen Sie eine Grep-Suche für alle Dateien und in allen Verzeichnissen durch

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