La tête et la queue

Publié le par Peck

Maintenant sur http://linux-attitude.fr/post/La-tete-et-la-queue

Niveau
:
Résumé: tail | head <= sed


Supposons que vous ayez un gros fichier et que vous vouliez récupérer les lignes 200 à 235. Votre premier réflexe sera surement :
$ head -n 235 file.txt | tail -n 35


Oui, mais en pratique cela revient a faire lire le fichier par 2 processus, ce qui pour un gros fichier peut être particulièrement consommateur de ressources. Utilisez plutôt la commande suivante qui fait le tout en une seule passe (et qui vous évitera de faire une soustraction) :
$ sed -n '200,235p' file.txt


Oui, mais vous aimeriez bien ne pas avoir à mesurer les numéros des lignes que vous voulez récupérer. Qu'à cela ne tienne, vous pouvez utiliser autre chose que des numéros de ligne pour l'extraction. Par exemple des expressions régulières :
$ sed -n '/^Begin/,/^End/p' file.txt


Vous pouvez aussi faire le contraire, c'est-à-dire supprimer des lignes plutôt que de les sélectionner :
$ sed '/^Begin/,/^End/d' file.txt


Et cerise sur le gâteau, vous pouvez appliquer une expression de substitution uniquement aux lignes concernées :
$ sed '/^Begin/,/^End/s/search.*/replace/' file.txt

Publié dans admin

Pour être informé des derniers articles, inscrivez vous :

Commenter cet article