我试图找到 ? 的实际用途,例如“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
看一下正则表达式信息有关使用正则表达式的更多信息。