检查一行是否以grep的特定字符串开头

时间:2014-11-07 15:30:38

标签: shell grep

我有一个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的行。

1 个答案:

答案 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