如何在一定行之后grep几行

时间:2014-02-10 15:53:20

标签: grep

我有几个类似的文件:

abcd

several lines

abcd

several lines

abcd

several lines

.
.
.

我想要做的事情(最好使用grep)是在最后的abcd线之后立即获得20行。

感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:2)

使用-A选项:

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

所以:

$ grep -A 20 abcd file.txt

会给你abcd行+每行后20行。要获得最后21行,请使用tail

$ grep -A 20 abcd file.txt | tail -21

答案 1 :(得分:1)

你可以这样做:

awk '/abcd/ {n=NR} {a[NR]=$0} END {for (i=n;i<=n+20;i++) print a[i]}' file

它会搜索模式abcd并更新n,因此只会存储最后一个 它还将所有行存储在数组a中 然后,它会在20部分找到的最后一个模式中打印END行。