Inserindo texto no início de um arquivo com sed através do terminal no Linux [duplicado]

4

Como insiro texto no início de um arquivo via terminal?

    
por Regis da Silva 17.09.2011 / 07:44

3 respostas

9

sed é para editar fluxos - um arquivo não é um fluxo. Use um programa destinado a esse propósito, como ed ou ex . A opção -i para sed não é apenas não portável, mas também irá quebrar quaisquer links simbólicos para o seu arquivo, já que essencialmente o exclui e recria, o que é inútil.

ed -s file << EOF
0a
some text
you want to insert
goes here
.
w
EOF
    
por 17.09.2011 / 12:19
5

Especifique um intervalo de linha no arquivo de entrada que é restrito à primeira linha, depois substitua o início da linha pelo texto para adicionar e redirecionar o / p para um novo arquivo

cat f1
one

sed '1,1 s/^/abcdef\n/' < f1 >f2

cat f2
abcdef
one
    
por 17.09.2011 / 07:56
2

+1 para a resposta do abc, porque encontro sua bela expressão sed.

No entanto Regis não quer dois arquivos, ele quer inserir texto em seu arquivo; então eu adaptei a resposta do abc:

hmontoliu@ulises:/tmp$ cat >  f1 
one
^C
hmontoliu@ulises:/tmp$ sed -i '1 s/^/foobar\n/' f1
hmontoliu@ulises:/tmp$ cat f1
foobar
one
    
por 17.09.2011 / 11:53