grep nach einer Zeile in einer Datei entfernen Sie dann die Zeile
$ cat example.txt
Ergibt:
example
test
example
Ich will remove 'test' - string aus dieser Datei.
$ grep -v test example.txt > example.txt
$ cat example.txt
$
Den folgenden arbeiten, aber ich habe das Gefühl, es gibt einen besseren Weg!
$ grep -v test example.txt > example.txt.tmp;mv example.txt.tmp example.txt
$ cat example.txt
example
example
Erwähnenswert, dass dies sein wird eine Datei mit über 10.000 Zeilen.
Cheers
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun Sie es der richtige Weg, sondern verwenden Sie eine
&&
vor der mv, um sicherzustellen, dass die grep erfolgreich oder du wirst zappen Sie Ihre original-Datei:Habe ich auch noch die
-F
Optionen, da Sie sagte, das Sie entfernen möchten ein string, kein regexp.KÖNNTEN Sie
sed -i
aber dann müssen Sie kümmern, herauszufinden, und/oder die Flucht sed-Trennzeichen und sed nicht unterstützt Suche nach strings, so würden Sie brauchen, um zu versuchen zu entkommen, jede mögliche Kombination von regexp-Zeichen im such-string zu versuchen, sed-behandeln Sie Sie als literal-Zeichen (ein Prozess, den Sie NICHT automatisieren, aufgrund der position-sensitive Natur der regexp chars) und alle, die es würde speichern Sie manuell benennen Sie Ihre tmp-Datei da sed verwendet man intern sowieso.Oh, eine andere option könnte man verwenden, GNU awk-4.* mit "inplace editing". Es verwendet auch eine tmp-Datei, die intern wie sed funktioniert, aber es unterstützt die string-Operationen, so dass Sie nicht brauchen, um zu versuchen zu entkommen RE-Metazeichen und es keine Trennzeichen als Teil der syntax zu kümmern:
Jede grep/sed/awk-Lösung ausführen, die im Handumdrehen auf einem 10.000-Datei.
Könntest du sed benutzen,
-i
speichert die änderungen an dieser Datei vorgenommen. so brauchen Sie nicht zu verwenden, eine Umleitung Betreiber.sed -i '/t\/e\/s\/t/d' example.txt
X
Holen Sie hat das gleiche problem/Frage:what if I was looking for tXeXsXt?
.