在:
f
这样工作正常,但它在$ log_file中抛出stderr,如下所示。我想替换:
main 2>&1 | tee -a $log_file;
使用:
"ERROR (version 5.3.0.0-213, build 1 from 2015-02-02_12-17-08 by buildguy) : (stderr)"
我希望版本和日期采用正则表达式格式。
后:
"NOTE (version 5.3.0.0-213, build 1 from 2015-02-02_12-17-08 by buildguy) : (stderr)"
答案 0 :(得分:1)
你应该准确地确定你的需要,现在很难阅读你的代码。
这里有两个选项:
第一个选项
我无法测试它,但它应该是这样的:
<delivery-failure-params>
<error-destination>ErrorQueue</error-destination>
<redelivery-limit>0</redelivery-limit>
<expiration-policy>Redirect</expiration-policy>
</delivery-failure-params>
第二个选项
经测试,它有效。
main 2>&1 | SED COMMAND | tee -a $log_file
由于-i选项,Sed将编辑内联指定的文件。
<强> REGEX 强>
如果您想通过注意更改所有 ERROR ,那么您应该只使用此sed命令
sed -i "s/ERROR (version 5.3.0.0-213, build 1 from 2015-02-02_12-17-08 by buildguy) : (stderr)/NOTE (version 5.3.0.0-213, build 1 from 2015-02-02_12-17-08 by buildguy) : (stderr)/g" $log_file
如果你想更具体一点,请看看这个答案:using SED with wildcard
答案 1 :(得分:0)
你能试试吗;
main 2>&1 | sed "/ERROR.*[0-9]\{1\}.[0-9]\{1\}.[0-9]\{1\}.[0-9]\{1\}-[0-9]\{3\}.*20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}_[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}.*(stderr)/ s/ERROR/INFO/" | tee -a $log_file
找到版本,正则表达式;
[0-9]\{1\}.[0-9]\{1\}.[0-9]\{1\}.[0-9]\{1\}-[0-9]\{3\} :
要查找日期,正则表达式:例如(2015-02-02_12-17-08)
20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}_[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}
如果日期如2015-12-03 11.37.25,则应使用
20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{2\}.[0-9]\{2\}.[0-9]\{2\}