Eu quero fazer alguma manipulação de linha, mas estou preso no processamento linha por linha. Meu arquivo está assim:
10.10.10.10 ABtest
10.10.10.11 ABprod
Eu quero acrescentar uma string em cada linha de acordo com a string no final da linha.
Minha abordagem é usar o awk para testar a string ABtest
no final da linha e depois converter de ABtest
para test
com sed. Depois disso, quero anexar a saída a cada linha relacionada.
Eu quero saída da seguinte forma:
10.10.10.10 ABtest test
10.10.10.11 ABprod prod
Não há necessidade de ambos
sed
eawk
você pode optar por uma ferramenta. O código que cumpre seu objetivoawk
pode ser/<expression>/
procura por regex e a{<code>}
parte diz ao awk o que fazer com aquele registro. Neste caso particular, a funçãogsub
substitui todas as aparências de 'AB' na segunda coluna - se você quiser substituir apenas a primeira aparência,sub()
mas em relação ao regex, acho que pode usar uma ou outra com o mesmo resultado aqui - e o resultado é impresso posteriormente.Não está claro em sua pergunta se há alguma linha entre as linhas a serem editadas para serem impressas inalteradas. Se for esse o caso, você precisa pular para o próximo registro após combinar e editar assim:
Talvez você deva criar um teste ainda mais específico usando
if
. Eu recomendo fortemente que você dê uma olhada em alguns recursos do awk ( aqui ou aqui, por exemplo)