我试图使用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
会看到的。