Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2013, à 01:45

un_zero_2011

[Résolu] J'ai une question à propos du "grep"

Bonjour,

J'ai un petit problème pour récupérer la ligne qui se trouve au dessus ou au dessous d'un mot clé.

Par exemple, j'ai le texte suivant :

bla bla bla X bla bla bla
bla bla X bla bla bla bla    <---- (1)
bla bla bla bla Z bla bla
bla bla bla X bla bla bla    <---- (2)
bla bla X bla bla bla bla

Je voudrais récupérer le "X" qui se trouve en dessous du Z (1) , et celui qui se trouve au dessus de lui (2).
Je ne pense pas que ça soit possible avec un grep .

Bien Cordialement

PS: Je débute dans le bash. Si vous avez la gentillesse de m'expliquer votre code, ou m'indiquer des sources qui expliquent clairement comment faire cette manip, je vous serai très reconnaissant.

Dernière modification par un_zero_2011 (Le 18/05/2013, à 11:33)

Hors ligne

#2 Le 18/05/2013, à 06:02

xavier4811

Re : [Résolu] J'ai une question à propos du "grep"

Bonjour,

avec grep pas sur mais avec sed oui, tu devrait trouver ton bonheur la dedans : sed1line_fr
ou peu être avec awk : awk1line

Hors ligne

#3 Le 18/05/2013, à 06:04

pingouinux

Re : [Résolu] J'ai une question à propos du "grep"

Bonjour,
Pour récupérer les deux lignes qui encadrent celle contenant le mot Z :

awk '/\<Z\>/{print lig;getline;print;exit}{lig=$0}' fichier
bla bla X bla bla bla bla    <---- (1)
bla bla bla X bla bla bla    <---- (2)

Explications :
awk traite les lignes une à une.

/\<Z\>/{print lig;getline;print;exit}
Si la ligne en cours contient le mot Z, on imprime lig (la ligne précédente), on passe à la ligne suivante, on l'imprime, et on sort

{lig=$0}
On stocke la ligne en cours dans la variable lig

Hors ligne

#4 Le 18/05/2013, à 06:43

gigiair

Re : [Résolu] J'ai une question à propos du "grep"

grep -B1 -A1 Z fichier|grep -v Z

-B1 : une ligne avant (Before), -A1 : Une ligne après (After), pipe : -v sauf cette ligne

Dernière modification par gigiair (Le 18/05/2013, à 06:44)


--
JJR.

Hors ligne

#5 Le 18/05/2013, à 06:54

pingouinux

Re : [Résolu] J'ai une question à propos du "grep"

@gigiair #4 : Pas mal ! Tu peux même remplacer "-B1 -A1" par "-C1".

Hors ligne

#6 Le 18/05/2013, à 10:22

un_zero_2011

Re : [Résolu] J'ai une question à propos du "grep"

Merci à tous pour vos réponses smile smile smile .

Dernière modification par un_zero_2011 (Le 18/05/2013, à 11:11)

Hors ligne

#7 Le 18/05/2013, à 11:41

Hizoka

Re : [Résolu] J'ai une question à propos du "grep"

gigiair => merci !
je ne savais pas que grep le faisait !


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne