Remover uma determinada palavra em um arquivo

3

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 a partir de baixo 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 
    
por Ram 23.05.2016 / 21:00

3 respostas

1

Você pode tentar sed substitution

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

Em que abcd[0-9]* corresponde a cada abcd seguido por um número, o mesmo com *test[0-9]*:

    
por 23.05.2016 / 21:09
1

Uma solução usando o corte:

cat $FILE | cut -d' ' -f4,6 --complement
    
por 23.05.2016 / 23:19
0

se você precisar remover sempre a mesma frase que pode tentar

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

mostra-lhe a saída no stdout se quiser salvar esta saída, adicione o > ao finel da instrução ou > > para anexar o resultado conteúdo para 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
    
por 23.05.2016 / 23:00