我正在尝试使用bash脚本grep一些文本中的整数:
#!/bin/bash
var=string2
cat file.txt | grep -oP '(?<=string1)(\d.*)(<=$var)'
但脚本没有输出任何内容 如果我把“string2”而不是“$ var”我得到了预期的结果 我想我应该以某种方式逃避变量,但我无法弄清楚如何 我试过双引号,花括号,转义双引号,但没有任何作用 我还搜索了stackoverflow man grep和google 那么这样做的正确方法是什么? 感谢
答案 0 :(得分:2)
变量仅在双引号内扩展,而不是单引号。所以它应该是:
cat file.txt | grep -oP "(?<=string1)(\d.*)(<=$var)"
答案 1 :(得分:1)
错误的引语:
$ echo '(?<=string1)(\d.*)(<=$var)'
(?<=string1)(\d.*)(<=$var)
,同时:
$ echo "(?<=string1)(\d.*)(<=$var)"
(?<=string1)(\d.*)(<=string2)
echo
显示grep
将会看到的内容。