使用 grep 过滤进程的实时输出?如果是这样,如何在比赛后获得线路? [复制]
Posted
技术标签:
【中文标题】使用 grep 过滤进程的实时输出?如果是这样,如何在比赛后获得线路? [复制]【英文标题】:Using grep to filter real time output of a process? If so, how to get the line after a match? [duplicate] 【发布时间】:2019-03-31 15:05:12 【问题描述】:我应该使用 grep 过滤实时输出吗?我不确定这是否应该用于实时输出。
示例:command -option | grep --color 'string1\|string2'
如果是这样,如何获得string1
和string2
之后的行?
【问题讨论】:
什么是实时输出? 欢迎 DeborahAnn,如果您能阐明实时输出的含义,将会很有帮助——您需要 grep 来做什么?另外,后面的线条到底是什么意思?这是比赛后的单行吗?还是n行?还是找到string1
或string2
之后的每一行?
对不起,我的英语不好。对于“实时输出”,我的意思是一个打印直到被用户终止的进程(基本上是一个循环)。
谢谢@lucascaro。我在输出中有这个文本是由一个进程生成的(这个进程一直执行到用户决定终止它),我正在使用 grep 来查找包含 string1 或 string 2 的文本字符串。每次找到 string1 或 string2通过 grep 我还需要在之后打印该行。所以如果string1在第20行,string2在第80行,我需要打印第21行和第82行。
检查man grep
,看看你的版本是否提供-a
(行a之后),所以cmd|grep -a2 's1\|s2'
。祝你好运。
【参考方案1】:
正如@shellter 提到的,来自man grep
:
-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
作为快速的第一次检查。
【讨论】:
非常感谢。以上是关于使用 grep 过滤进程的实时输出?如果是这样,如何在比赛后获得线路? [复制]的主要内容,如果未能解决你的问题,请参考以下文章