Regex 如何在grep正则表达式中引用shell变量和任意数字?

Regex 如何在grep正则表达式中引用shell变量和任意数字?,regex,bash,grep,Regex,Bash,Grep,我希望将此正则表达式转换为grep-flavor: 我正在尝试筛选包含refs/changes/\d+/$VAR/ 假设VAR=285900 b3fb1e501749b98c69c623b8345a512b8e01c611 refs/changes/00/285900/9 当前代码: VAR=285900 grep 'refs/changes/\d+/$VAR/' sample.txt 在简单引号中,我不能使用变量展开 您可以混合和匹配引号: foo=not; echo 'single

我希望将此正则表达式转换为grep-flavor:

我正在尝试筛选包含
refs/changes/\d+/$VAR/

假设
VAR=285900

b3fb1e501749b98c69c623b8345a512b8e01c611    refs/changes/00/285900/9
当前代码:

VAR=285900
grep 'refs/changes/\d+/$VAR/' sample.txt
在简单引号中,我不能使用变量展开

您可以混合和匹配引号:

foo=not; echo 'single quotes '"$foo"' here'
用双引号表示它与任何内容都匹配

不清楚你在做什么,所以我们不能说为什么它不起作用。它应该会起作用。对于
grep
,不需要转义前斜杠,它们没有任何特殊意义

在简单引号中,我不能使用变量展开

您可以混合和匹配引号:

foo=not; echo 'single quotes '"$foo"' here'
用双引号表示它与任何内容都匹配

不清楚你在做什么,所以我们不能说为什么它不起作用。它应该会起作用。对于
grep
,不需要转义前斜杠,它们没有任何特殊意义

我正在尝试筛选包含
refs/changes/\d+/$VAR/

那就是

grep "refs/changes/[[:digit:]]\{1,\}/$VAR/"

注意,
\d+
符号是perl的东西。一些功能过度的grep可能会支持它,但出于可移植性的原因,我不推荐它

我正在尝试筛选包含
refs/changes/\d+/$VAR/

那就是

grep "refs/changes/[[:digit:]]\{1,\}/$VAR/"


注意,
\d+
符号是perl的东西。一些功能过剩的grep可能会支持它,但出于可移植性的原因,我不推荐它。

我不明白这个问题,什么不起作用?我没有看到正则表达式。在这种情况下,请将
-F
参数用于
grep
。请将示例输入和该示例输入所需的输出添加到您的问题中。在您编辑问题以包含重要的
\d+
部分之前,如何有人给出一个好的答案?我不理解这个问题,什么不管用?我没看到一个正则表达式。在这种情况下,请将
-F
参数用于
grep
。请将示例输入和该示例输入所需的输出添加到您的问题中。在您编辑问题以包含重要的
\d+
部分之前,有人如何给出一个好的答案?我不会说支持像GNU grep这样的perl正则表达式是错误的功能过剩。事实上,有时候拥有它是很好的。但是,是的,出于可移植性的原因,我也不建议您习惯它,我不会说支持像GNU grep这样的perl正则表达式功能过份。事实上,有时候拥有它是很好的。但是,是的,出于可移植性的原因,我也不建议习惯它。