Wenn man vor der Aufgabe steht, aus einer Datei etliche Zeilen zu entfernen, die aber alle nicht gleich sind, könnte man ins Grübeln kommen. Ich stand vor dem Problem, die liste.txt immer in eine bestimmte
Reihenfolgen bringen zu müssen und mit Zeilen, in denen es von Sonderzeichen
nur so wimmelte. Da sowohl die auswahl.txt als auch die liste.txt
Extrakte aus einer Datenbank sind, musste ich diesen Weg gehen.
Hier führen wie so oft verschiedene Wege zum Ziel.
Mit fgrep zum Beispiel:
$cat auswahl.txt
Kein Zweifel
Fettig
75 Rinder
& können
$ cat liste.txt
Irgendeind Text mit allerlei sinnlosem Inhalt
Nochmal gesagt: Kein Zweifel, hier ist nur Schwachsinn drin
Fettig ist gar keine gute Eigenschaft für Haare
12 Schafe, 75 Rinder und 44 Ziegen
Sonderzeichen wie z.B. & können hier auch drin sein
Diese Zeile soll den Abschluß bilden.
fgrep -f auswahl.txt liste.txt
$ fgrep -f auswahl.txt liste.txt
Nochmal gesagt: Kein Zweifel, hier ist nur Schwachsinn drin
Fettig ist gar keine gute Eigenschaft für Haare
12 Schafe, 75 Rinder und 44 Ziegen
Sonderzeichen wie z.B. & können hier auch drin sein
Oder mit -v nur die Zeilen, die nicht in auswahl.txt stehen:
fgrep -vf auswahl.txt liste.txt
$ fgrep -vf auswahl.txt liste.txt
Irgendeind Text mit allerlei sinnlosem Inhalt
Diese Zeile soll den Abschluß bilden.
Das ist eigentlich trivial und wäre keinen Blog Post wert, allerdings finde ich es erwähnenswert, das man in auswahl.txt Zeichen, die normalerweise in der shell escaped werden müssen, ohne irgendwelche Skrupel unverändert eintragen kann.