【问题标题】:shell variable in a grep regexgrep 正则表达式中的 shell 变量
【发布时间】:2013-08-11 10:56:56
【问题描述】:

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

$ string="test this"
$ var="test"
$ echo $string | grep '^$var'
$ 

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

$ echo $string
test this
$

【问题讨论】:

  • 好吧,我想我发现它可以使用双引号。
  • 正确,双引号。请记住,在双引号中,您必须转义反斜杠和 EOL $

标签: bash grep


【解决方案1】:

您需要使用双引号。单引号防止 shell 变量被 shell 插值。如果您的正则表达式使用 $ 作为模式的一部分,您可以使用单引号来防止 shell 进行插值。如果您使用双引号,也可以使用反斜杠引用$

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

例子:

$ string="test this"
$ var="test"
$ echo $string | grep "^${var}"

【讨论】:

  • 如何在这个表达式中另外使用终端锚$?例如我试过grep "^$var$",但它似乎不起作用。编辑:Nvm,grep "^$var$" 似乎确实有效。我还有一些其他语法错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多