Como faço para remover apenas abcd11.gmail.com
e *test1:
da linha 1 e abcd14.gmail.com
e *fortest2:
da linha 2 e abcd19.gmail.com
e *asatesteg:
da linha 2 abaixo, deixando o restante como está? Eu tenho milhares de linhas em um arquivo como este:
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
Responder1
Você pode tentar sed
a substituição
$ sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file
Onde abcd[0-9]*
corresponde a cada abcd
seguido por um número, o mesmo com*test[0-9]*:
Responder2
Uma solução usando corte:
cat $FILE | cut -d' ' -f4,6 --complement
Responder3
se você precisar remover sempre a mesma frase, você pode tentar
sed -e 's/abcd[0-9]*//g' -e 's/*test[0-9]*://g' file.ext
isso mostra a saída no stdout, se você quiser salvar esta saída, basta adicionar o >final da instrução ou >>anexar o conteúdo a outro arquivo
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
então você pode remover o arquivo antigo e substituí-lo pelo novo
rm file.ext
mv new_file.ext file.ext