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 -foo
a um arquivo que contém apenas uma linha.
testfile
início do conteúdo:
some-text
testfile
final 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 -foo
apenas 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,num
para 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.