web-dev-qa-db-fra.com

Comment puis-je supprimer la première ligne d'un fichier avec sed?

les lignes suivantes ajoutent le contenu de essay_i.txt à la fin de essay1.txt;

touch essay1.txt
for (( i = 1 ; i <= 10 ; i++ )); do
sed '2p' essay_"${i}".txt >> essay1.txt
done

comment dois-je le changer pour que la première ligne de chaque essai_i.txt ne soit pas copiée (c'est-à-dire uniquement la copie de la ligne 2-> fin)?

2
user2413

Pour supprimer la première ligne, utilisez '1d' (c'est-à-dire la ligne 1, supprimez):

touch essay1.txt
for file in essay_*; do
  sed '1d' $file >> essay1.txt
done

la sortie sera

~$ cat essay1.txt 
line 2 from essay 1
line 3 from essay 1
line 2 from essay 2
line 3 from essay 2
...

pour tous les fichiers nommés essay_* dans le répertoire de travail en cours.


Au lieu d'utiliser sed, vous pouvez également utiliser tail pour effectuer ce travail:

tail -n +2 $file >> essay1.txt

+2 signifie à partir de la deuxième ligne (-n 2 correspond aux deux dernières lignes).

8
Stefano Palazzo