2016-10-25 6 views
0

Ich habe ein kleines Skript bash wie folgt:Cut Worte von Dateien basierend auf grep

cat foo.txt | grep "balt" > bar_file 

Im Idealfall, was ich möchte, ist geschehen, dass jedes Wort, das "balt" enthält, würde ich aus der foo.txt Datei entfernt mag. Kann ich eine Richtung bekommen, wie man Wörter von einer Datei auf eine andere basierend auf dem was grepped ist, bewegt.

+0

, so dass Sie jedes Wort entfernen mögen, die „balt“ und übertragen den Rest in einer anderen Datei enthält? – ritesht93

+0

Aus der foo.txt-Datei, wenn das Wort "balt" enthält, möchte ich es aus dieser Datei entfernen und das gesamte Wort in eine andere (neue) Datei einfügen. @ ritesht93 – 74i8Un3

Antwort

0

Als eine Randnotiz: Es ist nicht notwendig cat zu verwenden und seine Ausgabe an grep zu leiten, da Sie den Dateinamen direkt an grep übergeben können, was eine einzelne Prozessausführung reduziert.

Was Ihre Frage können Sie -o Möglichkeit grep zu bekommen geschriebene Wörter nur balt in ihnen mit zusammen mit \b Grenze wie diese Überprüfung:

$ cat foo.txt 
abcd baltabcd xyz 
xdef abbaltcd xyz 
balt 
$ grep -o '\b\w*balt\w*\b' foo.txt 
baltabcd 
abbaltcd 
balt 
$ grep -o '\b\w*balt\w*\b' foo.txt > bar_file 
$ cat bar_file 
baltabcd 
abbaltcd 
balt 
$ 

Wie können Sie grep Spiele 0 oder mehr Wortzeichen sehen vorhanden vor oder nach balt und legt das in eine andere Datei. Beispiel Worte waren: baltabcd, abbaltcd und balt

+0

Danke! Das hat funktioniert. – 74i8Un3

+0

@ 74i8Un3 welcome :) – ritesht93

+0

kann '-w' verwenden Option zu vermeiden' \ b' – Sundeep

Verwandte Themen