将变量传递给GREP内部lookbehind组



我试图使用bash脚本在某些文本中为整数抓取:

#!/bin/bash
var=string2    
cat file.txt | grep -oP '(?<=string1)(d.*)(<=$var)'  

但是脚本什么也没输出。
如果我将" string2"而不是" $ var"放置,我确实会得到预期的结果。
我想我应该以某种方式逃脱变量,但我不知道如何。
我尝试了双引号,卷曲的括号,逃脱了双引号,但没有任何可用。
我还搜索了Stackoverflow Man Grep和Google。
那么做什么的正确方法是什么?
谢谢

变量仅在双引号内扩展,而不是单引号。所以应该是:

cat file.txt | grep -oP "(?<=string1)(d.*)(<=$var)"

错误的引号:

$ echo '(?<=string1)(d.*)(<=$var)'  
(?<=string1)(d.*)(<=$var)

while:

$ echo "(?<=string1)(d.*)(<=$var)"
(?<=string1)(d.*)(<=string2)

echo显示了grep会看到的。

相关内容

  • 没有找到相关文章