grep正则表达式中的shell变量

mik*_*e_b 36 bash grep

我正在尝试在grep正则表达式中使用变量.我将发布一个失败的例子,也许有人可以建议如何在运行grep命令时对变量进行评估.我也试过${var}了.

$ string="test this"
$ var="test"
$ echo $string | grep '^$var'
$ 
Run Code Online (Sandbox Code Playgroud)

由于我的正则表达式应该匹配以"test"开头的行,它应该打印通过它回显的行.

$ echo $string
test this
$
Run Code Online (Sandbox Code Playgroud)

Dav*_* W. 43

你需要使用双引号.单引号可防止shell对shell变量进行插值.您使用单引号来防止shell进行插值,如果您的正则表达式用作$模式的一部分,则可能必须执行插值操作.如果您使用双引号,也可以使用反斜杠引用 a $.

此外,您可能需要将变量放在花括号${var}中,以帮助将其与模式的其余部分分开.

例:

$ string="test this"
$ var="test"
$ echo $string | grep "^$var"
Run Code Online (Sandbox Code Playgroud)

  • 示例代码中的花括号在哪里? (2认同)
  • 我如何在这个表达式中另外使用一个结束线锚`$`?例如,我试过`grep "^$var$"`,但它似乎不起作用。编辑:Nvm,`grep "^$var$"` 似乎工作。我有一些其他语法错误。 (2认同)