Mit GNU sed und bash:
sed -i -f <(sed 's|.*|/&/d|' pattern.file) text.file
Ich suche nach einer Möglichkeit, bestimmte Zeilen in einer Datei zu löschen, die Muster aus einer externen Datei nimmt. Der beste Weg wäre, sed zu verwenden. Ich habe versucht, einige Artikel, wie diese, aber sie ist nicht meine Aufgabe zu beantworten.
Angenommen, ich habe eine Textdatei mit:
Adam Belle Candy Donald Eve
Und eine Musterdatei hat:
Don* Candy
Mit grep -fv pattern.file text.file
bekomme ich genau das, was ich will, aber nur im Blickfeld:
Adam Belle Eve
Ich kann die gefilterte Ausgabe nicht in eine neue Datei umleiten. Daher brauche ich eine Möglichkeit, die ursprüngliche text.file zu ändern, indem ich alle Zeilen lösche, die den Mustern aus der externen Datei entsprechen.
In meiner realen Anwendung enthält die Textdatei nicht alphabethische Reihenfolge, die nicht immer großgeschrieben wird. Daher ist es nicht möglich, einen generischen Regex für 'sed' zu erstellen.
Was wäre der beste Ansatz, um Muster für das Löschen von Zeilen aus einer externen Datei zu übergeben?
Mit GNU sed und bash:
sed -i -f <(sed 's|.*|/&/d|' pattern.file) text.file