我有几个类似的文件:
abcd
several lines
abcd
several lines
abcd
several lines
.
.
.
我想要做的事情(最好使用grep)是在最后的abcd线之后立即获得20行。
感谢任何帮助。
谢谢
答案 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
行。