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 28/06/2023, à 23:27

arnoxz

[Résolu] #bash afficher lignes supérieure / inférieure d'un fichier

Bonjour,

Je ne parviens plus à me souvenir comment lire (et faire une recherche d'un mot/ligne) un fichier (ascii / txt,..) et en afficher une ligne spécifique incluant les 2 (ou autre nombre) lignes précédant et suivant cette ligne (ce qui affiche 5 lignes dans ce cas-ci, les options permettaient d'en afficher le nombre désiré)  ?

Etait-ce avec (ou en combinaison) cat, grep, find, sed, less, sort,... ? J'exclus tail et head.... ?!

Merci

Dernière modification par Ayral (Le 03/07/2023, à 00:16)

Hors ligne

#2 Le 29/06/2023, à 00:29

f.x0

Re : [Résolu] #bash afficher lignes supérieure / inférieure d'un fichier

Bonjour arnoxz,

tu devrais t'en sortir avec grep

man grep
Contrôle des lignes de contexte
       -A N, --after-context=N
              Afficher les N lignes qui  suivent  celle  contenant  le  motif.  Une  ligne  contenant  --  est  insérée  entre  les  groupes  contigus  de
              correspondances. Avec l'option -o ou --only-matching, ça n'a aucun effet et un avertissement est affiché.

       -B N, --before-context=N
              Afficher  les  N  lignes  qui  précèdent  celle  qui  contient  le  motif.  Une ligne contenant -- est insérée entre les groupes contigus de
              correspondances. Avec l'option -o ou --only-matching, ça n'a aucun effet et un avertissement est affiché.

SOPI

Hors ligne

#3 Le 29/06/2023, à 03:04

nany

Re : [Résolu] #bash afficher lignes supérieure / inférieure d'un fichier

Bonjour,



Un extrait de man grep (in english, sorry) plus complet (toute la section Context Line Control) :

   Context Line Control
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching  option,  this
              has no effect and a warning is given.

       -B NUM, --before-context=NUM
              Print  NUM  lines of leading context before matching lines.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this
              has no effect and a warning is given.

       -C NUM, -NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this  has  no  effect  and  a
              warning is given.

       --group-separator=SEP
              When -A, -B, or -C are in use, print SEP instead of -- between groups of lines.

       --no-group-separator
              When -A, -B, or -C are in use, do not print a separator between groups of lines.

En effet, avec la seule option « -C 2 » on obtient le même résultat qu’avec la combinaison « -A 2 -B 2 ».
De plus on peut choisir un séparateur différent de « -- » ou même carrément choisir de ne pas mettre de séparateur (en tout cas avec la version 3.7 de grep).

Dernière modification par nany (Le 29/06/2023, à 03:43)

En ligne

#4 Le 02/07/2023, à 20:39

arnoxz

Re : [Résolu] #bash afficher lignes supérieure / inférieure d'un fichier

Bonjour,

Merci pour vos réponses, j'ai entre-temps retrouvé dans mes notes (celles manuscrites), ce que je cherchais, c'est bien avec grep.

grep -n -2 [mot-clef] [nomfichier.txt]

la réponse affichera non seulement les numéros de lignes du document contenant le mot clef de la recherche et également les 2 lignes précédentes et suivantes... puissant, précis, pratique :-)
Ma question de départ n'était peut-être pas assez précise, car je ne connais pas la ligne de départ à afficher, c'est aussi une recherche en plus de l'affichage que je désirais, je note également les possibilités d'affichage avec vos remarques, merci :-)

Dernière modification par arnoxz (Le 02/07/2023, à 20:40)

Hors ligne

#5 Le 02/07/2023, à 23:12

f.x0

Re : [Résolu] #bash afficher lignes supérieure / inférieure d'un fichier

Je suis content pour toi que cela ait fonctionné arnoxz, bonne continuation sur Gnu/Linux


SI TU PENSES QUE TU AS LA RÉPONSE À LA QUESTION POSÉE, AJOUTES [RÉSOLU] DANS LE TITRE DE TON PREMIER POST, CELA POURRA AIDER D'AUTRES UBUNTEROS QUI ONT LA MÊME QUESTION QUE TOI. wink


SOPI

Hors ligne