Entfernen eines bestimmten Wortes in einer Datei

Entfernen eines bestimmten Wortes in einer Datei

Wie entferne ich nur „ abcd11.gmail.comund“ *test1:aus Zeile 1 und „ abcd14.gmail.comund *fortest2:“ aus Zeile 2 und „ abcd19.gmail.comund“ *asatesteg:aus Zeile 2 von unten und lasse den Rest so wie er ist? Ich habe Tausende von Zeilen in einer Datei wie dieser:

May 23 03:44:02 abcd11.gmail.com x.x.x.x.x: *test1: May 23 04:46:21.032: #TEST1_ENTRY:4105 THIS is a test1    
May 23 03:44:02 abcd14.gmail.com x.x.x.x.x: *fortest2: May 23 04:46:21.032: #TEST2_ENTRY:4105 THIS is a test2 
May 23 03:44:02 abcd19.gmail.com x.x.x.x.x: *asatesteg: May 23 04:46:21.032: #TESTEG_ENTRY:4105 THIS is a testeg 

Antwort1

Sie können es sedmit einer Substitution versuchen

$ sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file

Wobei abcd[0-9]*„jedes“ abcdmit einer Zahl übereinstimmt, dasselbe gilt für*test[0-9]*:

Antwort2

Eine Lösung mit Cut:

cat $FILE | cut -d' ' -f4,6 --complement

Antwort3

Wenn Sie immer den gleichen Satz entfernen müssen, können Sie versuchen

sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext

Dies zeigt Ihnen die Ausgabe in der Standardausgabe. Wenn Sie diese Ausgabe speichern möchten, fügen Sie sie einfach >dem Ende der Anweisung hinzu oder >>hängen Sie den Inhalt an eine andere Datei an

sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext>new_file.ext
sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext>>new_file.ext

dann können Sie die alte Datei entfernen und durch die neue ersetzen

rm file.ext
mv new_file.ext file.ext

verwandte Informationen