Qual é o comando para “prefixar” uma linha em um arquivo? [duplicado]

17

Além de criar um arquivo temporariamente com uma linha no cabeçalho e movê-lo de volta quando terminar, existe uma maneira padrão de acrescentar algumas linhas a um arquivo?

por exemplo, você faz (echo #GPL license; cat $file) > tmpfile; mv tmpfile $file

EDIT2

Em primeiro lugar, eu estava apenas tentando ver se há um comando padrão que vem com distros comuns, eu acho que não

EDITAR

E observe que a fonte para preceder pode não ser apenas uma string fixa, pode ser um arquivo também, por exemplo, cat $header $file > tmpfile; mv tmpfile $file

    
por daisy 28.11.2012 / 12:37

1 resposta

22

Se sed (GNU) estiver ok para você:

$ sed -i '1i #GPL License' file

No caso de a fonte ser um arquivo :

Os arquivos de origem:

$ cat file1
hi
hello
$ cat file2
welcome to
Unix SO.

O comando sed:

$ sed -i  '1{
r file1
h;d
};2{H;g;}' file2

A saída após o comando sed:

$ cat file2
hi
hello
welcome to
Unix SO.

O comando 'r' do sed não pode ler um arquivo antes da primeira linha e, portanto, esta solução. A 1ª linha é mantida em memória temporária, o conteúdo do arquivo 1 é enviado para o terminal e, em seguida, quando a segunda linha chega, é impresso junto com a 1ª linha.

    
por 28.11.2012 / 13:07

Tags