Como anexar a primeira linha de um arquivo?

6

Como você pode usar o sed para substituir toda a primeira linha de um arquivo com a primeira linha e mais algum texto adicional? Por exemplo, como posso acrescentar -foo a um arquivo que contenha apenas uma linha.

testfile conteúdo começar:

some-text

testfile contents end:

some-text-foo
    
por tarabyte 29.01.2016 / 01:06

3 respostas

3

How to append to the first line of a file?

How can you use sed to replace the entire first line of a file with that first line plus some additional text?

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

Primeiro Comando (acrescentar caracteres -foo ao final da primeira linha apenas)

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

Segundo Comando (converte EOL de volta para alimentação de linha de retorno de carro)

SED -i "s/$/\r/" "C:\Path\testfile.txt"
    
por 29.01.2016 / 02:44
2
sed '1{s/$/-foo/}' file

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

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

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

    
por 31.01.2016 / 03:47
1

Você pode fazer isso com

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

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

    
por 29.01.2016 / 02:37

Tags