2013-12-09 100 views
0

我有一个应用程序正在使用XVFB运行无头。该应用程序运行良好,但我确实收到大量难以捉摸的Xlib:扩展名为“RANDR”,显示“:1”错误。这个错误实际上没有任何结果,除了大量的错误使用无用的信息填充我们的日志文件。我想要做的是过滤掉字符串。筛选stdout/stderr与sed

我们经营产生像这样的日志文件:

DISPLAY=":1" $PYBIN myScript.pyc > myLogfile.log 2>&1 & 

我想管的python脚本的输出到sed中,筛选出“的Xlib:扩展名‘RANDR’失踪显示“:1 “',然后将结果写入myLogfile.log。这就是我想要的,但没有骰子:

DISPLAY=":1" $PYBIN myScript.pyc | sed -n "missing on display" > myLogfile.log 

在哪里标准错误重定向到标准输出,使他们都被处理中美战略经济对话? 如何正确格式化REGEX?

谢谢!

回答

1

使用sed,你可以使用一种模式和d flag

DISPLAY=":1" $PYBIN myScript.pyc 2>&1 \ 
| sed '/missing on display/d' \ 
| > myLogfile.log 

我在多线分割的命令\

2

您可以使用grep代替:

DISPLAY=":1" $PYBIN myScript.pyc 2>&1 | grep -v "missing on display" > myLogfile.log 
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的文件描述符,所以我们说“将FILE#2的输出发送到与FILE#1”(标准输出)相同的地址(&)。

+0

如何过滤整个字符串:Xlib:扩展名“RANDR”缺少显示“:1”引号字符给我带来麻烦。 – Zobal

+0

我更新了答案(注意使用单引号)。 – Donovan