How do you grep a file and get the next 5 lines

前端 未结 3 610
后悔当初
后悔当初 2020-12-02 09:26

How do I grep a file for 19:55 and get the Line 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 1         


        
相关标签:
3条回答
  • 2020-12-02 10:01

    Here is a sed solution:

    sed '/19:55/{
    N
    N
    N
    N
    N
    s/\n/ /g
    }' file.txt
    
    0 讨论(0)
  • 2020-12-02 10:03

    Some awk version.

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

    When pattern found, set c=5
    If c is true, print and decrease number of c

    0 讨论(0)
  • 2020-12-02 10:07

    You want:

    grep -A 5 '19:55' file
    

    From 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.
    
    0 讨论(0)
提交回复
热议问题