automatisch editieren mit sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
fenster
Beiträge: 259
Registriert: 07.08.2003 22:37:14

automatisch editieren mit sed

Beitrag von fenster » 24.01.2005 17:56:07

hallo

möchte mit sed automatisch
die datei profile editieren
den wert 022 auf 027 stellen
sodas 027 dauserhaft in der datei eingetragen
bleibt
auch nach dem booten

sed -e '18 s/\<022\>/027/' profile

mit dieser anweisung wird der wert zwar
auf 027 gestellt aber
er wird nicht fix gepeichert

wie kann ich mit sed die datei neu
speichern oder überschreiben ?

mit

sed -e '18 s/\<022\>/027/' profile | > profile

wird die datei zwar überschrieben
aber die ist dann leer ?



gruß
fenster

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

Beitrag von gms » 24.01.2005 20:40:39

Code: Alles auswählen

sed -e '18 s/\<022\>/027/' profile >profile.tmp && mv profile.tmp profile

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 24.01.2005 20:50:15

Hi fenster,

warum wird denn bei Dir die /etc/profile bei jedem booten neu erstellt? Eigentlich sollte es doch reichen die umask dort einzutragen und dann ist sie immer so da drin.
Lesen und schreiben in die gleiche Datei funktioniert halt nicht. Du kannst es nur über eine temporäre Datei lösen.

z.B. folgende Zeile in Dein Skript aufnehmen:

Code: Alles auswählen

exec `f=\`mktemp\`; cp /etc/profile $f; sed 's/022/027/' $f > /etc/profile; rm $f`
SubOptimal

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 24.01.2005 22:09:28

Code: Alles auswählen

sed -e '18 s/\<022\>/027/' -i profile 
Speichert die Ergebnisse in der Datei währenddem ein Sed ohne -i die Datei + Änderungen "nur" ausgibt.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 24.01.2005 22:19:16

Hi peschmae,

danke für den Tipp. '-i' kannte ich auch noch nicht. Man nimmt halt immer zuerst das was schon immer ging. :-)

SubOptimal

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

Beitrag von gms » 25.01.2005 08:26:51

SubOptimal hat geschrieben: danke für den Tipp. '-i' kannte ich auch noch nicht. Man nimmt halt immer zuerst das was schon immer ging. :-)
l
Danke auch, kannte ich auch noch nicht.
Nur frage ich mich warum bei debian/sarge zu sed eine völlig veraltete manpage zu finden ist (Juli 93). Unter RH EL ES 3 habe ich die gleiche sed version (4.0.7) aber eine manpage vom April 2003

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 25.01.2005 11:40:36

Hi gms,

habe hier auf sarge ein sed 4.1.2-8 mit manpage vom Dezember 2004.
Woher hast Du denn Dein sed? Das bei Dir ein 'apt-get update' fehlt glaube ich fast nicht.

SubOptimal

Nachtrag: sed 4.0.7 ist von März 2003, also würde das mit der manpage von April 2003 zumindest passen.

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

Beitrag von gms » 25.01.2005 12:44:19

nein, nach einem "apt-get --purge remove manpages-de" werden mir jetzt auch die aktuellen angezeigt :)

Antworten