br + adicione a última palavra em cada string somente se a palavra não aparecer

1

Eu tenho o seguinte arquivo:

linuxA.mtt.corp
linux3V
linux4B
linux2A
linux5v.mtt.corp

como adicionar o .mtt.corp em cada string que não tenha essa palavra?

    
por yael 18.05.2016 / 16:34

2 respostas

4

É bem simples com sed :

sed -e '/\.mtt\.corp$/!s/$/.mtt.corp/' <file

Isso faz com s ubstitute o final da linha com .mtt.corp em cada linha, o que não termina com essa string.

    
por 18.05.2016 / 16:41
1

Uma solução perl:

$ perl -lpe '$_ .= ".mtt.corp" if !/\.mtt\.corp$/' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp

O -p faz perl imprimir cada linha do arquivo de entrada depois de aplicar o script fornecido por -e e o -l remove as novas linhas à direita de cada linha de entrada e adiciona uma a cada print . A variável $_ é a linha atual. Portanto, isso adicionará mtt.corp à linha se ela não corresponder a ela.

Uma solução awk:

$ awk '!/\.mtt\.corp$/{$0=$0".mtt.corp"}1;' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp

A mesma ideia. .mtt.corp é adicionado a todas as linhas ( $0 ) que não terminam com ele e cada linha é impressa ( 1; ).

    
por 18.05.2016 / 16:49