grep完全匹配

时间:2015-06-11 15:55:53

标签: linux grep

我有一个看起来像这样的文件:

1   2HE MET 1.8493
1   3HE MET 1.3568
2   H   GLN 6.1731
2   HA  GLN 4.2384
2   2HB GLN 2.2204
2   3HB GLN 1.3062

我使用grep命令:grep H file并获取如上所示的所有行。我想只检索2 H GLN 6.1731行。 我已使用grep 'H$'file以及grep -x H processed_shifts.out但未使用这些命令获得任何输出。我怎样才能修改grep命令只将第3行作为输出?

2 个答案:

答案 0 :(得分:2)

如果您正在使用GNU grep,那么您可以使用-w--word-regexp标记,或者使用字边界包装正则表达式:grep '\bH\b'

但是,这将是不可移植的,因为POSIX grep缺少-w标志,基本和扩展正则表达式都不支持字边界。因此,如果您希望命令可移植,那么您必须执行grep ' H '之类的操作,或者使用更强大的语言,例如AWK:awk '$2 = "H" { print }'

答案 1 :(得分:0)

尝试使用grep的正则表达式。尝试使用/ ^ H $ /作为您正在使用的内容。这是H上完全匹配的正则表达式。^表示字符串必须以H开头,$表示它必须以H结尾。因此它将匹配任何只是H的字符串。

让我知道这是否有效,因为我现在无法测试我的答案。

相关问题