143 votes

Comment utiliser la commande <code>grep</code> pour extraire un fichier et obtenir les 5 lignes suivantes

Comment puis-je grep un fichier pour 19:55 et obtenir la ligne 1,2,3,4,5?

2013/10/08 19:55:27.471
Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5

2013/10/08 19:55:29.566
Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5

262voto

iiSeymour Points 34967

Vous voulez:

grep -A 5 '19:55' file

De man grep:

Contrôle de Lignes de Contexte

-A NUM, --after-context=NUM

Affiche NUM lignes de contexte après les lignes correspondantes.  
Place une ligne contenant un séparateur de groupe (décrit sous --group-separator) 
entre des groupes contigus de correspondances.  Avec l'option -o ou --only-matching
cette option n'a aucun effet et un avertissement est donné.

-B NUM, --before-context=NUM

Affiche NUM lignes de contexte avant les lignes correspondantes.  
Place une ligne contenant un séparateur de groupe (décrit sous --group-separator) 
entre des groupes contigus de correspondances.  Avec l'option -o ou --only-matching
cette option n'a aucun effet et un avertissement est donné.

-C NUM, -NUM, --context=NUM

Affiche NUM lignes de contexte de sortie. Place une ligne contenant un séparateur de groupe
(décrit sous --group-separator) entre des groupes contigus de correspondances.  
Avec l'option -o ou --only-matching, cela n'a aucun effet et un avertissement
est donné.

--group-separator=SEP

Utilise SEP comme séparateur de groupe. Par défaut, SEP est un double tiret (--).

--no-group-separator

Utilise une chaîne vide comme séparateur de groupe.

4voto

Jotne Points 15088

Quelques version awk.

awk '/19:55/{c=5} c-->0'
awk '/19:55/{c=5} c && c--'

Lorsque le motif est trouvé, définir c=5
Si c est vrai, afficher et diminuer le nombre de c

2voto

Jason Points 65

Voici une solution sed :

sed '/19:55/{
N
N
N
N
N
s/\n/ /g
}' file.txt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X