有什么用?在 grep 命令中.. 和实际使用

RBA*_*RBA 4 grep regex

我试图找到 ? 即例如“egrep a?文件名”但无法找到任何..它返回所有结果..

所以,请帮助我知道 egrep 的实际用途?命令..

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

谢谢

Ric*_*dle 9

假设您想在脚本中匹配这样的数字赋值表达式:

x=1234
Run Code Online (Sandbox Code Playgroud)

其中一些数字是负数并带有减号:

x=-5678
Run Code Online (Sandbox Code Playgroud)

你可以用这个:

grep -E "x=-?[0-9]+" *
Run Code Online (Sandbox Code Playgroud)

问号使减号成为可选。

(我不认为普通的 grep 支持?or +,因此-E)。

  • @RB:`egrep a?filename` 将匹配每一行。它本身没有用。 (3认同)
  • 常规 GNU grep(不带 -E)支持`?`,但你必须转义它。`回声“颜色”| grep "colou\?r"` 应该返回 `color`。 (2认同)

cha*_*aos 8

?不是 basic 中的元字符grep,因此如果您正在搜索a?,则实际上是在搜索 fora后跟一个问号。

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

  • 是的,`a?` 本身是无意义的搜索,因为它总是匹配的。它仅作为更大的正则表达式的一部分才有意义。 (2认同)

小智 4

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

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