grep 命令中的 ? 有什么用处?以及实际用途

grep 命令中的 ? 有什么用处?以及实际用途

我试图找到 ? 的实际用途,例如“egrep a? filename”,但找不到任何内容。它返回所有结果。

因此,请帮助我,让我知道 egrep ? 命令的实际用途。

如果我使用“a?”,它将返回所有结果,即字符串或行。其中有 0 个 a、1 个 a、2 个 a 等等。即我无法找到相同的用途。

谢谢

答案1

假设您想要在脚本中匹配如下数字赋值表达式:

x=1234

有些数字是负数,带有减号:

x=-5678

你可以使用这个:

grep -E "x=-?[0-9]+" *

问号使得减号成为可选项。

(我不认为简单的 grep 支持?+,因此-E)。

答案2

?在基本中不是元字符grep,因此如果您在 grep 中查找a?,那么您实际上是a在 grep 后跟问号。

如果您使用egrep(又名grep -E),那么表明?是零个或一个前一个实体正则表达式元字符的答案是正确的。

答案3

这是单字符搜索,匹配其前面的一个或零个字符。

注意:您需要先使用 \ 来转义 ?:\?。

答案4

在正则表达式中,a? 表示 0 或 1 个“a”。因此,如果您搜索包含 0 或 1 个 a 的字符串,您将找到所有内容。它很有用的一个地方是匹配正整数:

/^\+?\d+$/

其结果是

^: beginning of line
\+: + sign
?: 0 or 1 of previous character
\d: digit
+: one or more of previous character
$: end of line

+123并且将匹配456

看一下正则表达式信息有关使用正则表达式的更多信息。

相关内容