#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)
Hors 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.
SOPI
Hors ligne