0

我正在尝试使用 bash 脚本在某些文本中查找整数:

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

但脚本什么也没输出。
如果我输入“string2”而不是“$var”,我会得到预期的结果。
我想我应该以某种方式转义变量,但我不知道如何。
我尝试了双引号、大括号、转义双引号,但没有任何效果。
我还搜索了stackoverflow man grep 和google。
那么这样做的正确方法是什么?
谢谢

4

2 回答 2

2

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

cat file.txt | grep -oP "(?<=string1)(\d.*)(<=$var)"
于 2012-10-19T16:40:29.660 回答
1

错误的引用:

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

尽管:

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

echo显示grep会看到什么。

于 2012-10-19T16:40:19.817 回答