Edite a primeira linha do arquivo de texto grande

16

Eu tenho um enorme arquivo de texto, grande demais para que a coisa toda seja colocada na memória. Tudo que eu preciso fazer com este arquivo de texto é editar a primeira linha (é um arquivo CSV e eu preciso alterar os títulos).

Existe uma maneira simples de fazer isso no bash?

    
por lynks 14.12.2012 / 14:45

2 respostas

21

Você pode usar less para ver o que deseja editar e usar sed para fazer as alterações. Desta forma, você edita sem carregar o arquivo inteiro.

Outra maneira é dividir o arquivo, editar e participar novamente:

split -b 10000k <file>

and to join:

cat xa* > <file>
    
por 14.12.2012 / 14:56
3

Se a sua modificação alterar o comprimento da linha, o arquivo inteiro precisará ser reescrito. Consulte, por exemplo, esta discussão no SO. Você provavelmente deveria considerar salvar os dados em um banco de dados.

Tendo isso em mente, você pode transmitir o arquivo com sed. Para substituir a primeira linha, faça algo assim (GNU sed):

< oldfile sed '1c\new_heading' > newfile
    
por 14.12.2012 / 15:04