Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
bongout
- Beiträge: 217
- Registriert: 15.08.2003 13:02:23
-
Kontaktdaten:
Beitrag
von bongout » 09.04.2006 19:38:25
sorry - super Anfängerfrage
Ich möchte gern ein paar config Dateien automatisch anpassen. I.d.R. soll dann vor oder nach einer bestimmten Stelle was eingefügt werden.
text am Ende der Datei einfügen soll wohl leicht mit
gehen.
Wie kann ich aber in meier Datei test.config den Ausdruck xyz suchen und dann davor/danach meinen "Text" einfügen?
(ich weiß, lesen würde helfen, aber ich hoffe dass mir hier jemand sagen kann wie's geht ohne dass ich die ganze bash.Bibel lernen muss....)
-
ScyTheMan
- Beiträge: 363
- Registriert: 23.10.2004 15:09:14
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von ScyTheMan » 09.04.2006 19:47:54
bongout hat geschrieben:text am Ende der Datei einfügen soll wohl leicht mit
gehen.
Nö, damit überschreibst du die Datei. Anhängen wäre
>>
-
fuzzy
- Beiträge: 1021
- Registriert: 04.10.2003 12:15:52
Beitrag
von fuzzy » 09.04.2006 20:19:09
Hallo bongout,
Code: Alles auswählen
fuzzy@sid:/tmp$ cat datei
textanfang
xyz
textende
fuzzy@sid:/tmp$ sed 's/xyz/xyz # und danach Kommentare/' datei > datei-text
fuzzy@sid:/tmp$ cat datei-text
textanfang
xyz # und danach Kommentare
textende
Code: Alles auswählen
fuzzy@sid:/tmp$ sed -i 's/xyz/abc bis xyz/' datei
fuzzy@sid:/tmp$ cat datei
textanfang
abc bis xyz
textende
das sind zwei kleine unvollständige Beispiele
Linktipp:
http://www.linuxfibel.de/kapitel7.htm
...und es erleichtert die Sache mit kleinen Beispielen von DIr,
am besten mit Vorher/Nachher "Wünschen" und Deinen Versuchen.
Gruß fuzzy
-
bongout
- Beiträge: 217
- Registriert: 15.08.2003 13:02:23
-
Kontaktdaten:
Beitrag
von bongout » 10.04.2006 12:17:44
Hi Fuzzy,
Ein hoch auf Debianforum....
Nach dem Link von aspettl ist mein erstes Problem wohl gelöst (muss es nur noch heute abend ausprobieren:
Code: Alles auswählen
user:cat test
bla bla bla
exit
user: mv test test.old
user: sed /exit/ i\
#Kommentar\
Änderung1\
Änderung2\
#Kommentar test.old > test
user:cat test
bla bla bla
#Kommentar
Änderung1
Änderung2
#Kommentar
exit
Also wie gesagt - bisher nur theoretische Rekapitulation des erlernten
Dank Deiner Beispiele hab' dann wohl auch mein anderees Problem gelöst...
Code: Alles auswählen
user: cat datei
text=bla1, bla2, bla3
user: mv datei datei.old
user: sed 's/^text/text=/' datei.old > datei
user: cat datei
text=
Soweit alles ok?
-
meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
Beitrag
von meandtheshell » 10.04.2006 15:03:41
@bong...
- es wäre sehr hilfreich wenn du eine file unter NoPaste stellen könntest und das dafor und danach erwähnen würdest
- die von fuzzy erwähnte "inplace" ersetzung ist sicher die beste Wahl, da du dir ein umbenennen des files ersparst
- zusätzlich würde ich evtl. noch die option globales ersetzen wählen
das sieht dann alles so aus:
Code: Alles auswählen
markusgattol@pc1:/tmp$ echo -e "one \n two \n three three" > file && echo "four" >> file && cat file
one
two
three three
four
markusgattol@pc1:/tmp$ sed -i 's/three/three_with_a_shot_bourbon/' file && cat file
one
two
three_with_a_shot_bourbon three
four
markusgattol@pc1:/tmp$ sed -i 's/three/three_with_a_shot_bourbon/g' file && cat file
one
two
three_with_a_shot_bourbon_with_a_shot_bourbon three_with_a_shot_bourbon
four
markusgattol@pc1:/tmp$
wohingegen
Code: Alles auswählen
markusgattol@pc1:/tmp$ echo -e "one \n two \n three three" > file && echo "four" >> file && cat file
one
two
three three
four
markusgattol@pc1:/tmp$ sed -i 's/three/four_with_a_shot_bourbon/g' file && cat file
one
two
four_with_a_shot_bourbon four_with_a_shot_bourbon
four
markusgattol@pc1:/tmp$
markus