如何在 Unix 命令行中使用 Grep?

如何在 Unix 命令行中使用 Grep?

我想要 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单词”?

相关内容