Using grep to filter real time output of a process? If so, how to get the line after a match?
我应该使用grep来过滤实时输出吗? 我不确定这是否应该用于实时输出。
示例:command -option | grep --color 'string1\|string2'
如果是这样,如何获得string1和string2之后的行?
-
什么是实时输出?
-
欢迎DeborahAnn,如果你通过实时输出澄清你的意思,那将会有所帮助 - 你究竟需要grep做什么?另外,你的意思是什么?比赛结束后这是一条线吗?还是n行?或者找到string1或string2之后的每一行?
-
对不起,我的英语不好。对于"实时输出",我的意思是打印的过程直到被用户终止(基本上是循环)。
-
谢谢@lucascaro。我在输出中有这个文本由一个进程生成(这个过程一直执行,直到用户决定杀死它),我使用grep查找包含string1或string2的这个文本的字符串。每次找到string1或string2通过grep我还需要在之后打印该行。因此,如果string1在第20行并且string2在第80行,我需要打印第21行和第82行。
-
检查man grep并查看您的版本是否提供-a(后面的行),所以cmd|grep -a2 's1\|s2'。祝好运。
-
@shellter它应该是大写A,小写A意味着别的东西。
-
谢谢大家!
正如@shellter所提到的,来自man grep:
1 2
| -A num, --after-context=num
Print num lines of trailing context after each match. See also the -B and -C options. |
所以你可以使用command -option | grep -A 1 --color 'string1\|string2'打印匹配的行和它们后面的行。
grep和大多数其他命令行程序的手册中有很多其他选项,所以我建议习惯运行man cmd作为快速的第一次检查。