Como copiar as primeiras linhas de um arquivo gigante e adicionar uma linha de texto no final usando alguns comandos do Linux?

92

Como copio as primeiras linhas de um arquivo gigante e adiciono uma linha de texto no final dele, usando alguns comandos do Linux?

Biznez
fonte
1
Na festahead -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv
Eric Leschinski

Respostas:

151

O headcomando pode obter as primeiras nlinhas. As variações são:

head -7 file
head -n 7 file
head -7l file

que obterá as primeiras 7 linhas do arquivo chamado "file". O comando a ser usado depende da sua versão do head. O Linux funcionará com o primeiro.

Para anexar linhas ao final do mesmo arquivo, use:

echo 'first line to add' >>file
echo 'second line to add' >>file
echo 'third line to add' >>file

ou:

echo 'first line to add
second line to add
third line to add' >>file

para fazer isso em um golpe.

Então, juntando essas duas ideias, se você quisesse obter as primeiras 10 linhas do input.txtarquivo output.txte acrescentar uma linha com cinco "="caracteres, poderia usar algo como:

( head -10 input.txt ; echo '=====' ) > output.txt

Nesse caso, fazemos ambas as operações em um sub-shell para consolidar os fluxos de saída em um, que é então usado para criar ou sobrescrever o arquivo de saída.

paxdiablo
fonte
22

Estou assumindo que o que você está tentando alcançar é inserir uma linha após as primeiras linhas de de um arquivo de texto.

head -n10 file.txt >> newfile.txt
echo "your line >> newfile.txt
tail -n +10 file.txt >> newfile.txt

Se você não quiser o resto das linhas do arquivo, apenas pule a parte final.

DJ.
fonte
3
Subshells permitem que você faça isso sem reabrir o arquivo de saída:(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
hobbs
5

Primeiras linhas: man head.

Anexar linhas: use o >>operador (?) No Bash:

echo 'This goes at the end of the file' >> file
strager
fonte