Como adicionar uma nova linha de texto na primeira linha de um arquivo? [duplicado]

1

Arquivo:

TABLE1

1234 
9555    
87676  
2344

Resultado esperado:

Description of the following table:
TABLE1

1234
9555
87676
2344
    
por pmaipmui 06.05.2016 / 12:54

4 respostas

5

com sed :

$ sed -e '1i\
Description of the following table:
' <file
Description of the following table:
TABLE1

1234
9555
87676
2344
    
por 06.05.2016 / 12:56
6

Na verdade, echo e cat são suficientes para fazer o que você deseja:

echo "Description of the following table:" | cat - file

O argumento - informa cat para ler stdin .

    
por 06.05.2016 / 15:01
4
printf "%s\n" 1 i "Description of the following table:" . w | ed filename

Os comandos printf outputs ed (um por linha) que são canalizados para ed filename .

ed edita o arquivo conforme as instruções:

1                                        # go to line 1
i                                        # enter insert mode
Description of the following table:      # text to insert
.                                        # end insert mode
w                                        # write file to disk

BTW, ed executa uma edição real no local, não grava-a-arquivo-temp-e-move como sed e a maioria das outras ferramentas de edição de texto. O arquivo editado mantém o mesmo inode no sistema de arquivos.

    
por 06.05.2016 / 13:32
1

A opção awk seria:

gawk '
      BEGIN{print "Description of the following table:"}
      {print $0}' file > temp && mv temp file

Um pouco mais de trabalho do que sed aqui, porque o sed tem uma opção de edição no local -i pela qual você poderia gravar diretamente no arquivo.

    
por 06.05.2016 / 13:03