Como copio as primeiras linhas de um arquivo gigante e adiciono uma linha de texto no final dele, usando alguns comandos do Linux?
Respostas:
O head
comando pode obter as primeiras n
linhas. 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.txt
arquivo output.txt
e 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.
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.
(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
head -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv