sed/grep Zeilen löschen mit Hilfe einer Löschdatei

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
trickykid
Beiträge: 275
Registriert: 15.05.2003 12:37:06

sed/grep Zeilen löschen mit Hilfe einer Löschdatei

Beitrag von trickykid » 13.08.2016 18:34:49

Gegeben ich habe folgende Zeile in einer Textdatei
Bilder und Grafiken können in der Galerie abgespeichert werden.
Wenn ich in dieser Textdatei alle Zeilen löschen möchte die am Zeilenende ein werden. enthalten, dann mache ich das mit einem
sed '/werden\.$/d' Eingabedatei > Ausgabedatei


Wenn ich Zeilen mit verschiedenen Suchwörtern löschen möchte dann mache ich
sed '/werden\.$/d' Eingabedatei > Ausgabedatei
sed '/Wort$/d' Eingabedatei > Ausgabedatei
sed '/Satz$/d' Eingabedatei > Ausgabedatei
Jetzt müßte ich etwas mehr löschen. :)

Frage: Gibt es mit sed/grep/awk eine Möglichkeit sich eine Datei mit Suchwörtern anzulegen (also immer ein Wort pro Zeile) um mit einem Befehl die Suchwortdatei abzuarbeiten - ungefähr in dieser Art
sed/grep -? Suchwortdatei Eingabedatei > Ausgabedatei
In der Löschdatei stehen Einzeiler:
werden.
Satz
Wort

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: sed/grep Zeilen löschen mit Hilfe einer Löschdatei

Beitrag von rendegast » 13.08.2016 20:00:12

Deine Vorlage kann auch

Code: Alles auswählen

sed '
    /werden\.$/d
    /Wort$/d
    /Satz$/d
' Eingabedatei > Ausgabedatei

Code: Alles auswählen

sed -f strings-datei eingabe > ausgabe
strings-datei:

Code: Alles auswählen

/werden\.$/d
/Wort$/d
/Satz$/d
So auch grep

Code: Alles auswählen

grep -f strings-datei eingabe > ausgabe
strings-datei:

Code: Alles auswählen

werden[.]$
Wort$
Satz$
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: sed/grep Zeilen löschen mit Hilfe einer Löschdatei

Beitrag von newdeb » 15.08.2016 12:33:36

rendegast hat geschrieben: So auch grep

Code: Alles auswählen

grep -f strings-datei eingabe > ausgabe
Da der TE die den Mustern entsprechenden Zeilen zu löschen wünscht, wäre die grep-Option -v sinnvoll:

Code: Alles auswählen

grep -v -f strings-datei eingabe > ausgabe

Antworten