我有一个app.log文件
Oct 06 03:51:43 test test
Nov 06 15:04:53 text text text
more text more text
Nov 06 15:06:43 text text text
Nov 06 15:07:33
more text more text
Nov 06 15:14:23 test test
more text more text
some more text
Nothing but text
some extra text
Nov 06 15:34:31 test test test
如何grep所有不是从11月06日开始的行?
我试过了
grep -En "^[^Nov 06]" app.log
我无法获得其中包含06的行。
答案 0 :(得分:24)
只需使用以下grep命令,
grep -v '^Nov 06' file
来自grep --help
,
-v, --invert-match select non-matching lines
另一个通过正则表达式破解,
grep -P '^(?!Nov 06)' file
正则表达式说明:
^
断言我们刚开始。(?!Nov 06)
这个负向前瞻声明在行开始后没有字符串Nov 06
。如果是,则匹配边界存在于每行中的第一个字符之前。另一种基于正则表达式的解决方案,通过PCRE动词(*SKIP)(*F)
grep -P '^Nov 06(*SKIP)(*F)|^' file