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.
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.
Tente:
sed '32s,$,SOMETHING TO ADD,' FILE
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
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.
Tags text-processing sed linux