Wie entferne ich nur „ abcd11.gmail.com
und“ *test1:
aus Zeile 1 und „ abcd14.gmail.com
und *fortest2:
“ aus Zeile 2 und „ abcd19.gmail.com
und“ *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 sed
mit einer Substitution versuchen
$ sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file
Wobei abcd[0-9]*
„jedes“ abcd
mit 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