Eu tenho um arquivo de texto enorme, grande demais para que a coisa toda seja paginada na memória. Tudo o que preciso fazer com esse arquivo de texto é editar a primeira linha (é um arquivo CSV e preciso alterar os títulos).
Existe uma maneira simples de fazer isso no bash?
edlin
para ms-dos oued
para Unix não pareciam ter esse problema, mas apenas editores de linha ... RAM em esses tempos eram escassos e preciosos, e um tamanho de arquivo em Gigabytes era algo impossível de acreditar! ;)ed
!!! mas seria uma boa opção nesse caso (não tenho certeza de que ele poderia lidar com um arquivo desse tamanho ...) #Respostas:
Você pode usar
less
para ver o que deseja editar e usarsed
para fazer as alterações. Dessa forma, você edita sem carregar o arquivo inteiro.Outra maneira é dividir o arquivo, editar e ingressar novamente:
fonte
Se sua modificação alterar o comprimento da linha, o arquivo inteiro precisará ser reescrito, consulte, por exemplo, esta discussão sobre SO. Você provavelmente deve considerar salvar os dados em um banco de dados.
Tendo isso em mente, você pode editar o arquivo com o sed. Para substituir a primeira linha, faça algo assim (GNU sed):
fonte