我想要 grep 所有包含以“H”开头并以“d”结尾的单词的行。我该怎么做?我发现 grep ^H 会为每一行提供 H。
答案1
我会尝试:/^H.*d$/
。 ^ 以 开头,$ 以 结尾。 .* 匹配任何内容。
答案2
你如何定义“词语”?
如果它们由空格分隔:
grep '\<H[^ ]*d\>' ...
应该这样做。 \<
并\>
分别匹配单词的开头和结尾。 [^ ]*
匹配零个或多个非空格字符的序列。
更多,一般来说,如果你的 grep 支持它(GNU grep 支持):
grep '\<H[^[:space:]*d\>
查找由“空格”字符分隔的单词:制表符、换行符、垂直制表符、换页符、回车符和空格。
我假设“包含单词的行”意味着您希望匹配“foo H123d bar”。如果每行都包含一个完整的单词,则将替换\<
为^
和。\>
$
编辑:这可能不是 100% 正确。 \<
并将\>
“单词”定义为字母、数字和下划线的非空序列。准确定义“单词”的含义,我会尝试完善我的答案。什么是"*H*d*"
“H*d
单词”?