点击后如何grep打印下N行?


16

我想在文本文件中出现一个grep,然后在发现每个出现后打印以下N行。有任何想法吗?

Answers:


23

Grep具有以下选项,可让您执行此操作(以及类似的操作)。您可能需要查看手册页以获得更多信息:

  • -Anum在每个匹配项后打印num行的尾随上下文。另请参见-B和-C选项。

  • -B num在每次匹配之前打印前导上下文的num行。另请参见-A和-C选项。

  • -C [num]打印围绕每个匹配项的前导和尾随上下文的num行。缺省值为2,它等效于-A 2 -B2。注意:该选项及其参数之间不能有空格。


7

如果您有GNU grep,则为-A/ --after-context选项。否则,您可以使用awk

awk '/regex/ {p = N}
     p > 0   {print $0; p--}' filename

1
awk '/regex/{p=2} p > 0 {print $0; p--}' filename-有效,您的无效。
BladeMight '19


3

匹配行后打印N行

您可以使用grepwith -A n选项在匹配的行之后打印N行。

例如:

$ cat mytext.txt 
  Line1
  Line2
  Line3
  Line4
  Line5
  Line6
  Line7
  Line8
  Line9
  Line10

$ grep -wns Line5 mytext.txt -A 2
5:Line5
6-Line6
7-Line7

其他相关选项:

在匹配行之前打印N行

使用-B n选项可以在匹配行之前打印N行。

$ grep -wns Line5 mytext.txt -B 2
3-Line3
4-Line4
5:Line5

在匹配行之前和之后打印N行

使用-C n选项,您可以在匹配行之前和之后打印N行。

$ grep -wns Line5 mytext.txt -C 2
3-Line3
4-Line4
5:Line5
6-Line6
7-Line7
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.