构造正则表达式以在bash中使用grep查找不以某些字符串开头的行

时间:2014-10-21 13:32:48

标签: regex bash grep

我正在努力想出一个匹配所有不以

开头的行的正则表达式
10[TAB]A

M10....

并在bash中使用ggrep。

得到这样的东西:

^(^(10\tA|M10*))

但显然是错误的

非常感谢帮助

3 个答案:

答案 0 :(得分:5)

使用-v选项:

grep -v '^10\tA\|^M10' /path/to/file

grep -Ev '^10\tA|^M10' /path/to/file

使用-v选项,它将打印不匹配的行。


注意:\t无效。将其输入为真正的制表符(通过按 Ctrl + v Tab )。

答案 1 :(得分:1)

您可以使用以下grep命令。

grep -P '^(?!10\tA|M10)' file

(?!10\tA|M10)这个负向前瞻断言,起始锚点后面的字符串(即行的开头)不会是10标签A或M10。如果一条线满足这个条件,那么匹配将发生在该相应线的开始处。因此导致打印这些线。

答案 2 :(得分:1)

awk方式

awk '!/^(10\tA|M10)/' file

或者如果你想使用grep

grep -Ev '^(10      A|M10)' file