Comment grep un fichier et obtenir les 5 lignes suivantes

117

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

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

2013/10/08 19:55:29.566
Line 1
Line 2
Line 3
Line 4
Line 5
Leandro Toshio Takeda
la source
2
Votre titre a l'air génial. Vous savez - non, je ne grep pas un fichier et je reçois 5 lignes: p
Alma Do
Possible duplication de grep un fichier, mais afficher plusieurs lignes environnantes?
Organic Advocate

Réponses:

216

Tu veux:

grep -A 5 '19:55' file

De man grep:

Context Line Control

-A NUM, --after-context=NUM

Print NUM lines of trailing context after matching lines.  
Places a line containing a gup separator (described under --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 (described under --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
(described under --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

Use SEP as a group separator. By default SEP is double hyphen (--).

--no-group-separator

Use empty string as a group separator.
Chris Seymour
la source
2
Waouh Waouh Waouh. Mille mercis.
PhillipMwaniki
Ce serait génial s'il y avait un moyen de ne pas limiter la sortie à un certain nombre de lignes mais d'imprimer toutes les lignes après celle qui correspond.
Matthias Braun
4

Une awkversion.

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

Lorsque le motif est trouvé, définissez c=5
Si cest vrai, imprimez et réduisez le nombre dec

Jotne
la source
2

Voici une solution sed:

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