Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell: Ein Zeichen vor die Zeile setzen, bei Teilübereinstimmung von String



netmaster
07-12-2007, 08:32
Moin, moin.

Bin etwas eingerostet ws meine Shell-Kenntnisse angeht.
Habe folgendes vor:

1. Zeile suche, welche einen bestimmten String enthält
2. Wenn das erste Zeiche keine # ist, dann setze eine # vor die Zeile.
3. Soll direkt in der Datei passieren

Komme aber irgendwie nimmer weiter.


if [ `grep "/opt/him/bin/startDbUpd.pl" netmaster.txt | awk '{print substr($0,0,1)}'` != "#" ] ; then

--> Hier muss nun der CODE rein, welche mir in der Datei netmaster.txt vor die gefundene Zeile eine # setzt

fi

Vielleicht hat da jemand die Lösung für mich.
Ich sage schonmal Danke.

peschmae
07-12-2007, 10:45
Sowas?



peschmae@sid:/tmp$ cat test.txt
Zeile 1
Zeile 2
Zeile 3
Zeile 4
peschmae@sid:/tmp$ sed "/Zeile 3/ s/^/#/" < test.txt
Zeile 1
Zeile 2
#Zeile 3
Zeile 4
peschmae@sid:/tmp$


Kannst du, ums direkt in die Datei verwenden auch mit


sed "/Zeile 3/ s/^/#/" -i datei.txt

machen.

Erklärung: wenn das "/Zeile 3/" auf eine Zeile matcht wird sie von Sed behandelt. Dann wird das s/^/#/ ausgeführt, das ein ^ (der Zeilenanfang ;-)) durch ein # "ersetzt"

Für ein andermal: Liefer doch bitte gleich ein paar Input und Output-Datensätze mit; meistens ists so einfacher zu verstehen und auch zu testen, ob das Zeugs wirklich genau das tut was du willst oder nicht.

MfG Peschmä

netmaster
07-12-2007, 11:58
Supi, Danke.

^ (der Zeilenanfang) --> Das war es. Lang lang ists her. :-))

Nochmals Danke.