Como anexar texto ao final de uma certa linha de um arquivo?

3

Se eu precisasse anexar um nome de usuário à linha de chegada 32 em um arquivo, como o faria?

Eu posso encontrar no Google como adicionar texto ao início de uma linha com sed , mas não consigo descobrir como eu adicionaria o texto ao final, ou mesmo ao meio, se isso fosse possível.

    
por TrevorKS 19.06.2018 / 15:51

4 respostas

7

Você pode substituir seu texto pelo fim da linha ( $ ) assim:

sed -e '32s/$/your_text/' file

Para inserir texto no meio da linha, algumas informações sobre a estrutura da linha seriam úteis.

    
por 19.06.2018 / 15:58
4

Tente:

sed  '32s,$,SOMETHING TO ADD,' FILE
    
por 19.06.2018 / 15:57
2

Usando awk :

awk -v username='some username' -v line=32 'NR == line { $0 = $0 username } 1' file

Para inserir o nome de usuário no meio da linha, é preciso saber mais sobre as linhas do arquivo.

Se o nome de usuário e a linha forem variáveis:

awk -v username="$username" -v line="$line" 'NR == line { $0 = $0 username } 1' file

Se você deseja inserir um espaço antes do nome de usuário:

awk -v username="$username" -v line="$line" 'NR == line { $0 = $0 " " username } 1' file
    
por 19.06.2018 / 17:13
0

Usando ed :

$ seq 100 > 100file
$ username=jeff
$ ed -s 100file <<< $'32s/$/'"$username"$'/\nw\nq'
$ sed -n 28,34p 100file
28
29
30
31
32jeff
33
34

O / da string de substituição à direita suprime o comportamento de impressão padrão.

    
por 19.06.2018 / 18:52