监视字符串的命令行

时间:2013-01-09 12:40:00

标签: bash shell command-line

(在bash中)是否可以观察命令行程序的输出并在特定字符串出现时标记?

基本上我的问题是我们有大型构建脚本,可以为控制台产生大量输出。我想看一下控制台说“错误”这个词,然后以某种方式提醒我。

然后我知道去看其余的过程/取消它。

3 个答案:

答案 0 :(得分:5)

从命令行尝试这样:

<YOUR_BUILD_CMD> | grep ERROR

<YOUR_BUILD_CMD>输出时,它将仅打印出ERROR。 |pipe 运算符,这里是grep命令的手册。

答案 1 :(得分:5)

您可以grep获取字符串,但您需要存储make的原始输出,这可以使用tee来完成。发生错误时使用mplayer播放声音文件的示例:

make 2>&1 | tee make.log | grep -lq ERROR && mplayer alert.wav

答案 2 :(得分:0)

我会通过while循环来检查每一行输出。例如

cmd &| while read line;do if [[ ${line} =~ ErrorRegex ]];then echo Error Detected: $line; else echo $line; fi;done

将其打破“&amp; |”将stderr和stdout重定向到while循环,该循环一次读取1行输入并将其放入行变量中。然后一个简单的正则表达式比较查找错误字符串,你可以突出显示该行或将其记录在任何你喜欢的地方。如果它与错误不匹配,它将正常打印输出。