【发布时间】:2012-04-17 10:44:33
【问题描述】:
我正在尝试从包含字母“T”的文本文件中自动删除所有行,该字母“T”后面没有紧跟“H”。我一直在使用 grep 并将输出发送到另一个文件,但我想不出能帮助我做到这一点的神奇正则表达式。
如果 grep 不是正确使用的工具,我不介意使用 awk、sed 或其他一些 linux 工具。
【问题讨论】:
标签: regex
我正在尝试从包含字母“T”的文本文件中自动删除所有行,该字母“T”后面没有紧跟“H”。我一直在使用 grep 并将输出发送到另一个文件,但我想不出能帮助我做到这一点的神奇正则表达式。
如果 grep 不是正确使用的工具,我不介意使用 awk、sed 或其他一些 linux 工具。
【问题讨论】:
标签: regex
应该这样做:
grep -v 'T[^H]'
-v : 打印不匹配的行
[^H]:匹配除 H 以外的任何字符
【讨论】:
.* 的两个实例都不是必需的,因为 grep 会扫描整行以寻找匹配项
你可以这样做:
grep -v 'T[^H]' input
-v 是 grep 的反向匹配选项,它不会列出匹配模式的行。
使用的正则表达式是T[^H],它匹配任何作为T 后跟除H 之外的任何字符的行。
【讨论】: