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
- Ersetzen Sie die Tabulatortaste durch ein Leerzeichen.
- Zeilen löschen, die mit leerem Inhalt (oder einer leeren Zeile) beginnen
- Ersetzen Sie den Bindestrich am Anfang durch das Wort NODIESE
Daher wird Ihre Testdatei nur einmal verarbeitet und Sie starten sed nur einmal.