sed und suchen und löschen
sed und suchen und löschen
Ich habe hier eine Textdatei. Irgendwo steht das Wort "test" . Also das Einzelwort "test" bildet eine Zeile. Daneben gibt es "test" noch x-Mal als Wortbestandteil. Gefunden habe ich es mit einem
sed -n '/^.\{5\}/!p'
Ok, ich habe jetzt versucht es mit sed zu löschen. Das will mir nicht gelingen. Ein
sed -n '/test/p'
zeigt mir über 20.000 Zeilen an in den irgendwo "test" vorkommt.
Wie schaffe ich es das mir sed nur diese Zeile anzeigt?
Wie kann ich mit sed diese Zeile löschen?
sed -n '/^.\{5\}/!p'
Ok, ich habe jetzt versucht es mit sed zu löschen. Das will mir nicht gelingen. Ein
sed -n '/test/p'
zeigt mir über 20.000 Zeilen an in den irgendwo "test" vorkommt.
Wie schaffe ich es das mir sed nur diese Zeile anzeigt?
Wie kann ich mit sed diese Zeile löschen?
Zuletzt geändert von medias am 25.01.2015 19:48:48, insgesamt 2-mal geändert.
Re: sed und suchen und löschen
Code: Alles auswählen
< LOGFILE sed -n '/^test$/p'
Code: Alles auswählen
sed -i '/^test$/d' LOGFILE
Re: sed und suchen und löschen
Alternativ evtl:ThorstenS hat geschrieben:Code: Alles auswählen
< LOGFILE sed -n '/^test$/p'
Code: Alles auswählen
grep -Fx 'test'
Und um diese Zeilen zu loeschen:
Code: Alles auswählen
grep -Fxv 'test' alt >neu
# mv neu alt
Use ed once in a while!
Re: sed und suchen und löschen
der Blick in die manpage lohnt immer wieder. -Fx kannte ich so noch nicht, habe in einigen Scripten die unleserlichere Version grep "^\b$TEXT\b$" benutzt.
wieder was gelernt, danke dir!
wieder was gelernt, danke dir!
Re: sed und suchen und löschen
Danke für die Antworten. Mir hat das ^ gefehlt.
Re: sed und suchen und löschen
Wenn ich jetzt nicht nur die Zeile mit dem Wort "test" löschen möchte, sondern auch noch die Zeilen die das Wort "test2" und "test3" ... enthalten, wie kann ich das mit einem Einzeiler erledigen?Meillo hat geschrieben:Alternativ evtl:ThorstenS hat geschrieben:Code: Alles auswählen
< LOGFILE sed -n '/^test$/p'
(Das ist insbesondere dann geeignet, wenn der Wert in einer Variablen steht.)Code: Alles auswählen
grep -Fx 'test'
Und um diese Zeilen zu loeschen:Code: Alles auswählen
grep -Fxv 'test' alt >neu # mv neu alt
Re: sed und suchen und löschen
Code: Alles auswählen
sed -i '/^[tT]est[0-9]*$/d' dateiname
Code: Alles auswählen
sed -i '/^[tT]est[0-9]*\s*$/d' dateiname
Gruß
Es gibt Menschen, die Helfen können und es gibt den Rest, die man gleich ignorieren sollte...
Re: sed und suchen und löschen
Äh sorry, so war das nicht gemeint. Meine Beispiele waren blöd gewählt, Ich meine: Wie kann ich mit einem sed Einzeiler gleich mehrere Zeilen mit unterschiedlichen strings löschen. Ich möchte die Zeile löschen die nur das Wort "test" enthält, aber auch Zeilen löschen die nur das Wort "Duden", "Winter", oder "Saldo" enthalten.rsi hat geschrieben:oderCode: Alles auswählen
sed -i '/^[tT]est[0-9]*$/d' dateiname
falls du nicht sicher bist, ob hinter dem "Test" noch Leerzeichen stehen.Code: Alles auswählen
sed -i '/^[tT]est[0-9]*\s*$/d' dateiname
Gruß
Re: sed und suchen und löschen
probiers mal mit grep und einer Textdatei, die pro Zeile ein auszufilterndes Wort enthält:
Code: Alles auswählen
echo -e "Duden\nLange Zeile\nTest\nTest bleibt erhalten\nWinter\n Winter\n" > textdatei.test
echo -e "Winter\nTest" > grep.dateiliste
grep -vFx -f grep.dateiliste textdatei.test