2012-04-17 251 views
21

以外的所有行我试图自动从包含字母“T”的文本文件中删除所有行,紧接着不是紧跟着“H”。我一直在使用grep并将输出发送到另一个文件,但我无法想出能帮助我做到这一点的神奇正则表达式。Grep正则表达式:列出除

如果grep不是正确的工具,我不介意使用awk,sed或其他linux工具。

回答

51

应该这样做:

grep -v 'T[^H]' 

-v:打印线不匹配

[^ H]:匹配任何字符除H

+2

的'两个实例*'是没有必要的,因为grep扫描整个行寻找匹配 – 2012-04-17 10:53:36

+0

谢谢你的评论。编辑​​反映这一点。 – byrondrossos 2012-04-17 13:35:20

9

你可以这样做:

grep -v 'T[^H]' input 

-v是grep的逆匹配选项没有列出匹配模式的行。

中使用的正则表达式是T[^H]其中,作为一个T随后通过除H其他任何字符的任何行匹配。