Как мне удалить только abcd11.gmail.com
и *test1:
из строки 1 и abcd14.gmail.com
и *fortest2:
из строки 2 и abcd19.gmail.com
и *asatesteg:
из строки 2 снизу, оставив остальное как есть? У меня тысячи строк в файле, например:
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
решение1
Вы можете попробовать sed
замену
$ sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file
Где abcd[0-9]*
соответствует каждому, abcd
за которым следует число, то же самое с*test[0-9]*:
решение2
Решение с использованием разреза:
cat $FILE | cut -d' ' -f4,6 --complement
решение3
если вам нужно удалить всегда одно и то же предложение, вы можете попробовать
sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext
это покажет вам вывод в stdout, если вы хотите сохранить этот вывод, просто добавьте >в конец инструкции или >>добавьте содержимое в другой файл
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
затем вы можете удалить старый файл и заменить его новым
rm file.ext
mv new_file.ext file.ext