Como anexar à primeira linha de um arquivo?

Como anexar à primeira linha de um arquivo?

Como você pode usar o sed para substituir toda a primeira linha de um arquivo pela primeira linha mais algum texto adicional? Por exemplo, como posso anexar -fooa um arquivo que contém apenas uma linha.

testfileinício do conteúdo:

some-text

testfilefinal do conteúdo:

some-text-foo

Responder1

Como anexar à primeira linha de um arquivo?

Como você pode usar o sed para substituir toda a primeira linha de um arquivo pela primeira linha mais algum texto adicional?

Aqui está outra maneira de anexar uma string ao final da linha número 1 com SED no Windows e depois convertê-la novamente para o formato DOS para caracteres EOL, ou seja, CRLF em vez de LF...

Primeiro comando (anexar caracteres -fooapenas ao final da primeira linha)

SED -i "1 s|$|-foo|" "C:\Path\testfile.txt"

Segundo comando (converter EOL de volta para alimentação de linha de retorno de carro)

SED -i "s/$/\r/" "C:\Path\testfile.txt"

Responder2

sed '1{s/$/-foo/}' file

1 para a primeira linha, você pode usar num,numpara atribuir um intervalo, por exemplo, 3,5 é alterar a linha 3 para a linha 5. s para substituir, $ significa o fim da linha. Se quiser alterar o arquivo imediatamente, use -i parâmetro, de qualquer forma, use-o com cautela.

awk 'FNR==1{print $0 "-foo";}' file(s)

awk é mais poderoso, mas não possui o parâmetro -i para alterar o arquivo imediatamente.

Responder3

Você pode fazer isso com

sed -i '1!b;s/$/\-foo/g' testfile

Isso pega o arquivo, olha apenas a primeira linha (1!b;), procura o final da linha ($) e o substitui pela string desejada.

informação relacionada