如何抓取一个文件并获得接下来的5行

我如何 grep一个文件的 19:55和获得行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
155952 次浏览

你想要:

grep -A 5 '19:55' file

来自 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.

一些 awk版本。

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

找到模式后,设置 c=5
如果 c为真,打印并减少 c的数量

这里有一个 sed 解决方案:

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