[Resolvido] Como adicionar palavras à uma linha específica com SED ou AWK?

Ultimamente tenho me interessado na criação de shell scripts para automatizar certas tarefas, e agora me deparei com uma dúvida que não consegui solucionar até o momento.

Suponhamos que eu tenha um arquivo de texto chamado teste.txt com o seguinte conteúdo:

linha1
linha2
linha3

Preciso de um comando que edite este arquivo e o deixe da seguinte forma:

linha1
linha2 TextoDesejado
linha3

Com qual comando eu poderia fazer isso?

Pesquisando internet a fora o mais próximo disso que eu consegui encontrar foi o comando sed -i "3i TextoDesejado" test.txt, este porém adiciona uma nova linha na posição desejada (03 no caso), passando o conteúdo que antes estava na linha 03 para a linha 04 e assim sucessivamente. O quê eu preciso porém, é adicionar o texto desejado ao final de uma linha específica já existente, como no exemplo anterior.

Tanto faz se o comando usado for o “sed” ou o “awk” ou outro.
Aliás, o comando “echo” também faz isso?

1 Curtida

Via sed fica assim:

sed '2s/$/texto/'

Onde:

  • 2 é a linha
  • s é o comando substituir
  • $ significa final da linha (use ^ para o começo)
  • texto é o que você quer inserir

Você pode passar um intervalo também colocando uma vírgula e a última linha a ser inserida:

sed '2,9s/$/texto/'

Nesse exemplo vai ser inserido da linha 2 até a linha 9

1 Curtida

Até faz mas não compensa, o script fica muito ilegível

1 Curtida

Boa! Resolveu meu problema, obrigado!

Mas com uma observação: Precisei usar a flag -i para que salvasse.

No caso ficou:

sed -i ‘2s/$/texto/’ test.txt

1 Curtida

Falha minha, peço desculpa