Ich möchte einen Satz in php Dateien einfügen der immer in die erste Zeile geschrieben werden soll. Das ist meine Ausgangsbasis:
sed -e '1i\Diesen Satz einfügen' tabs
Wie führe ich das sed nur für Dateien mit der Endung php und über diverse Verzeichnisse und Verzeichnisebenen aus? Das Wurzelverzeichnis ist TEST.
Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?
-
- Beiträge: 320
- Registriert: 01.01.2007 13:19:34
Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?
eine sed-Akrobatik brauchts dazu nicht, "find" ist dir dabei behilflich:
Gruß
gms
Code: Alles auswählen
find TEST -name "*.php" -exec sed -e '1i\Diesen Satz einfügen' {} \;
gms
Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?
Anmerkung: Falls die geschweiften Klammern eine Sonderbedeutung haben (wie in der Bash) muss man ihnen ebenfalls einen Backslash vorran stellen.gms hat geschrieben:Code: Alles auswählen
find TEST -name "*.php" -exec sed -e '1i\Diesen Satz einfügen' {} \;
Use ed once in a while!
-
- Beiträge: 320
- Registriert: 01.01.2007 13:19:34
Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?
Danke für die Hilfe, aber damit wird mir nur der Inhalt der Dateien an der console ausgeworfen. Der output beginnt mit der Zeile
Diesen Satz einfügen
und danach folgt der Dateiinhalt.
Geschrieben und gespeichert wird gar nichts. Ich dachte es läge an den permissions oder am fehlenden sudo, aber war nicht.
Diesen Satz einfügen
und danach folgt der Dateiinhalt.
Geschrieben und gespeichert wird gar nichts. Ich dachte es läge an den permissions oder am fehlenden sudo, aber war nicht.
Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?
Das ist klar, weil `sed' den Dateiinhalt nicht verändert.bombaclaude hat geschrieben:Danke für die Hilfe, aber damit wird mir nur der Inhalt der Dateien an der console ausgeworfen. Der output beginnt mit der Zeile
"Diesen Satz einfügen"
und danach folgt der Dateiinhalt.
Es könnte gehen, wenn du die '-i' Option bei `sed' angibst.
Ansonsten funktioniert das:
Code: Alles auswählen
for i in `find TEST -name "*.php"` ; do ed "$i" <<EOF 2>/dev/null ; done
1i
Diesen Satz einfügen
.
w
q
EOF
Use ed once in a while!