Comment copier les premières lignes d'un fichier géant, et ajouter une ligne de texte à la fin de celui-ci à l'aide de certaines commandes Linux?

89

Comment copier les premières lignes d'un fichier géant et ajouter une ligne de texte à la fin de celui-ci, en utilisant certaines commandes Linux?

biznez
la source
1
In bashhead -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv
Eric Leschinski

Réponses:

147

La headcommande peut obtenir les premières nlignes. Les variations sont:

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

qui obtiendra les 7 premières lignes du fichier appelé "file". La commande à utiliser dépend de votre version de head. Linux fonctionnera avec le premier.

Pour ajouter des lignes à la fin du même fichier, utilisez:

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

pour le faire en un seul coup.

Donc, en liant ces deux idées ensemble, si vous voulez obtenir les 10 premières lignes du input.txtfichier output.txtet y ajouter une ligne de cinq "="caractères, vous pouvez utiliser quelque chose comme:

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

Dans ce cas, nous effectuons les deux opérations dans un sous-shell afin de consolider les flux de sortie en un seul, qui est ensuite utilisé pour créer ou écraser le fichier de sortie.

paxdiablo
la source
21

Je suppose que ce que vous essayez de réaliser est d'insérer une ligne après les premières lignes d'un fichier texte.

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

Si vous ne voulez pas rester les lignes du fichier, ignorez simplement la partie de fin.

DJ.
la source
3
Les sous-shells vous permettent de faire cela sans rouvrir le fichier de sortie:(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
hobbs
5

Premières lignes: man head.

Ajouter des lignes: utilisez l' >>opérateur (?) Dans Bash:

echo 'This goes at the end of the file' >> file
strager
la source