Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?

Beitrag von bombaclaude » 05.07.2008 23:02:13

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. 8O

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?

Beitrag von gms » 05.07.2008 23:11:52

eine sed-Akrobatik brauchts dazu nicht, "find" ist dir dabei behilflich:

Code: Alles auswählen

find TEST -name "*.php" -exec sed -e '1i\Diesen Satz einfügen' {} \;
Gruß
gms

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?

Beitrag von Meillo » 08.07.2008 15:22:37

gms hat geschrieben:

Code: Alles auswählen

find TEST -name "*.php" -exec sed -e '1i\Diesen Satz einfügen' {} \;
Anmerkung: Falls die geschweiften Klammern eine Sonderbedeutung haben (wie in der Bash) muss man ihnen ebenfalls einen Backslash vorran stellen.
Use ed once in a while!

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?

Beitrag von bombaclaude » 09.07.2008 16:24:21

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. 8O

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed-Akrobatik: Wie füge ich eine Zeile mit sed ein?

Beitrag von Meillo » 09.07.2008 16:53:34

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.
Das ist klar, weil `sed' den Dateiinhalt nicht verändert.

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!

Antworten