2012-04-17 230 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其他任何字符的任何行匹配。