我有一个看起来像这样的文件:
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行作为输出?
答案 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的字符串。
让我知道这是否有效,因为我现在无法测试我的答案。