使用 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'

如果是这样,如何获得string1string2之后的行?

【问题讨论】:

什么是实时输出? 欢迎 DeborahAnn,如果您能阐明实时输出的含义,将会很有帮助——您需要 grep 来做什么?另外,后面的线条到底是什么意思?这是比赛后的单行吗?还是n行?还是找到string1string2 之后的每一行? 对不起,我的英语不好。对于“实时输出”,我的意思是一个打印直到被用户终止的进程(基本上是一个循环)。 谢谢@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 过滤进程的实时输出?如果是这样,如何在比赛后获得线路? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

linux grep查询结果再过滤

Linux常用指令---grep(搜索过滤)(转)

windows cmd执行 adb logcat,怎么过滤输出结果

Linux下同进程多进程号实时监控

饮冰三年-人工智能-linux-05 Linux进程

命令行下过滤adb logcat的输出