我有一个使用XVFB的应用程序,以便无头运行。应用程序运行正常,但我确实得到了大量难以捉摸的Xlib:扩展“RANDR”缺少显示“:1”错误。这个错误实际上没有任何后果,只是大量的错误用无用的信息填充我们的日志文件。我想做的是过滤掉那个字符串。
我们运行生成日志文件,如下所示:
DISPLAY=":1" $PYBIN myScript.pyc > myLogfile.log 2>&1 &
我正在尝试将python脚本的输出传递给sed,过滤掉“Xlib:extension”RANDR“在显示屏上丢失”:1“',然后将结果写入myLogfile.log。这就是我正在尝试的,但没有骰子:
DISPLAY=":1" $PYBIN myScript.pyc | sed -n "missing on display" > myLogfile.log
我在哪里将stderr重定向到stdout,以便它们都由sed处理? 如何正确格式化REGEX?
谢谢!
答案 0 :(得分:2)
您可以改为使用grep
:
DISPLAY=":1" $PYBIN myScript.pyc 2>&1 | grep -v "missing on display" > myLogfile.log
答案 1 :(得分:1)
如果它只是“缺少显示”你想要过滤掉,你可以使用grep -v:
DISPLAY=":1" $PYBIN myScript.pyc &> | grep -v 'Xlib: extension "RANDR" missing on display ":1"' > myLogfile.log
&>
将所有输出重定向到bash / ksh下的STDOUT。如果您正在运行其他shell,则可能需要使用2>&1
。
“2”是STDERR的文件描述符,所以我们说“将文件#2的输出发送到与文件#1”相同的地址(&)(STDOUT)。
答案 2 :(得分:1)
使用sed
,您可以使用模式和d
flag:
DISPLAY=":1" $PYBIN myScript.pyc 2>&1 \
| sed '/missing on display/d' \
| > myLogfile.log
我正在使用\
在多行上拆分命令。