Check if a line does not start with a specific string with grep
本问题已经有最佳答案,请猛点这里访问。
我有一个文件app.log
1 2 3 4 5 6 7 8 9 10 11 12 | 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月6日开始的所有行?
我尝试了
1 | grep -En"^[^Nov 06]" app.log |
我无法获得其中包含06的行。
只需使用以下grep命令,
1 | grep -v '^Nov 06' file |
来自
1 | -v, --invert-match select non-matching lines |
通过正则表达式的另一种攻击,
1 | grep -P '^(?!Nov 06)' file |
正则表达式说明:
-
^ 断言我们处于起步阶段。 -
(?!Nov 06) 这个否定的前瞻断言在行首之后没有字符串Nov 06 。如果是,则匹配每行中第一个字符之前的边界。
通过PCRE动词
的另一种基于正则表达式的解决方案
1 | grep -P '^Nov 06(*SKIP)(*F)|^' file |