我的文件包含各种日志行,我想grep
选择一个模式,但是排除message:com.mycompany.excluded
的时间,因此基本上应该返回以下内容:
"The log found this message blah, message:com.blahblah"
"The log found this message blah2, message:com.blahblah2"
"The log found this message foobar, message:com.mycompany"
"The log found this message blah, message:com.mycompany.included"
但不是:
"The log found this message blah, message:com.mycompany.excluded"
我正在使用此模式,但不能排除com.mycompany.excluded
grep "The log found this message.*message:.*" "mylogs.txt"
答案 0 :(得分:1)
awk '/The log found this message.*message:/ && !/com.mycompany.excluded/' "mylogs.txt"
有多种方法可以使它更健壮,但这并不是必需的(取决于日志文件其余部分的外观)。
答案 1 :(得分:0)
您要的是sed
,而不是grep
:
sed -i .bak 's/^.*excluded//' mylogs.txt
(-i .bak
创建扩展名为.bak
的原始文件的备份;这将使您分别拥有mylogs.txt
和mylogs.txt.bak
,其中mylogs.txt
具有删除不需要的行。)