Bonjour,
Je crois que j'ai déjà vu passer la reponse mais je ne la retrouve pas:
Comment afficher les x lignes autour de celle contenant le motif recherché ?
D'avance merci.
Bonjour,
Je crois que j'ai déjà vu passer la reponse mais je ne la retrouve pas:
Comment afficher les x lignes autour de celle contenant le motif recherché ?
D'avance merci.
Salut,
Quelle en est la finalité ? Si ce n'est que pour de l'affichage, grep et ses options "-Bx" et "-Ax" (x étant un entier) est tout indiqué
Avec "sed" pour ce qui est d'afficher (ou traiter) les "x" lignes suivant un motif, un simple sed -n '/motif/,+3p' fichier devrait faire l'affaire. On peut aussi se servir de la commande "n" (next).
Par contre pour ce qui est des lignes précédentes, là c'est une autre histoire. Il faut jouer avec les mémoires (principale et secondaire) de "sed" et c'est un véritable casse-tête
Néanmoins c'est faisable, voir cette page. En voici un extrait :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 # imprime la ligne suivant celle qui coïncide avec regexp, # mais pas la ligne coïncidant avec regexp sed -n '/regexp/{n;p;}' # imprime une ligne de contexte avant et après regexp, avec numérotation # de lignes indiquant l'endroit de coïncidence avec regexp (similaire # à "grep -A1 -B1") sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h
Merci,
C'est bien le +x de sed que je crois avoir deja vu ici ,mais la version dont je dispose ne reconnait pas cette syntaxe d'adresse.
C'est aussi bien ces options de grep dont j'aurai eu besoin ( je ne les connaissais pas ) mais la version que j'ai ne les connait pas non plus.
Par contre la derniere soution proposée correspond à mon besoin ( j'avais etendu à x lignes pour généraliser l'exemple ) et ... ca marche !!!
Et bravo pour la reactivité habituelle.
Partager