Verwenden mehrerer sed-Befehle zur Textmanipulation

Verwenden mehrerer sed-Befehle zur Textmanipulation

Ich habe eine Bash-Datei, in der ich verschiedene Änderungen vornehmen möchte.

sed -i 's/      /    /g' testfile
sed -i -e 's/#[a-z]$//' -e '/^$/d' testfile
sed -i 's/ *$//' testfile
sed '/##=/ r header' testfile

Im ersten Befehl möchte ich TAB durch Leerzeichen ersetzen und danach Kommentare (es gibt auch Kommentare, die mit ## beginnen) und leere Zeilen entfernen. Danach möchte ich eine Datei nach einem bestimmten Muster in meine Datei einfügen. Stimmt etwas mit der Befehlsreihenfolge nicht?

Antwort1

Sie können in einem sed-Vorgang mehrere Anweisungen geben, zum Beispiel:

sed 's/\t/    /g;/^ *$/d;s/^#/NODIESE/' testfile

diese einzelne Zeile

  1. Ersetzen Sie die Tabulatortaste durch ein Leerzeichen.
  2. Zeilen löschen, die mit leerem Inhalt (oder einer leeren Zeile) beginnen
  3. Ersetzen Sie den Bindestrich am Anfang durch das Wort NODIESE

Daher wird Ihre Testdatei nur einmal verarbeitet und Sie starten sed nur einmal.

verwandte Informationen