Recherche de site Web

Commandes sur la façon de supprimer une première ligne d’un fichier texte à l’aide du shell bash


Dans cette courte configuration, nous allons montrer plusieurs options sur la façon de supprimer une première ligne d’un fichier texte. Voici le contenu de notre exemple file.txt.


cat file.txt 
line1
line2
line3
line4

Nous pouvons utiliser une commande sed pour supprimer une première ligne du fichier ci-dessus :


sed '1d' file.txt 
line2
line3
line4

Ce qui précède produira STOUT, vous devrez donc rediriger STOUT vers un nouveau fichier :


sed '1d' file.txt > mynewfile.txt

ou utilisez l’option -i pour modifier le fichier sur place :


sed -i '1d' file.txt 
cat file.txt 
line2
line3
line4

Une autre option pour supprimer une première ligne du fichier est l’utilisation de la commande tail :


tail -n +2 file.txt 
line2
line3
line4

Encore une fois, utilisez la redirection de STDOUT pour former un nouveau fichier sans première ligne. Un autre exemple sur la façon de supprimer une première ligne d’un fichier texte est d’utiliser l’éditeur de texte ed :


cat file.txt 
line1
line2
line3
line4
printf "%s\n" 1d w q | ed file.txt
24
18
cat file.txt 
line2
line3
line4

Ce qui s’est passé, c’est que nous avons utilisé la commande printf pour produire les commandes delete(1d), save(w) et quit(q) et les rediriger vers la commande ed. Dans l’exemple suivant, nous supprimons une première ligne du fichier à l’aide de l’éditeur de texte vi :


cat file.txt
line1
line2
line3
line4
vi -c ':1d' -c ':wq' file.txt
OR BETTER
ex -c ':1d' -c ':wq' file.txt
cat file.txt
line2
line3
line4

Les options sur la façon de supprimer une première ligne d’un fichier ne cessent de s’accumuler. Ici, nous utilisons une commande awk pour faire la même chose :


cat file.txt
line1
line2
line3
line4
awk 'NR > 1 { print }' file.txt
line2
line3
line4

Nous terminerons par un exemple sur la façon de supprimer une première ligne de tous les fichiers de votre répertoire :


ls
file1.txt  file2.txt

Nous devons utiliser des fichiers situés dans notre répertoire de travail actuel. Chaque fichier contient 4 lignes :


grep line *
file1.txt:line1
file1.txt:line2
file1.txt:line3
file1.txt:line4
file2.txt:line1
file2.txt:line2
file2.txt:line3
file2.txt:line4

Nous pouvons utiliser une boucle for pour supprimer une première ligne de chaque fichier :


for i in $( ls file*.txt ); do sed -i '1d' $i; done
grep line *
file1.txt:line2
file1.txt:line3
file1.txt:line4
file2.txt:line2
file2.txt:line3
file2.txt:line4

Articles connexes: