在sed中的单引号内使用双引号内的变量

时间:2014-11-04 19:48:53

标签: bash sed

我想搜索由位置参数给出的双引号括起来的字符串。这就是我所做的:

    #!/bin/bash

    FOO=$0

    sed -i 's/"${FOO}"/bar/m' file.txt

"$FOO"\"a${FOO}\"/都不起作用。

我知道要扩展变量,你必须将整个正则表达式用双引号(sed substitution with bash variables)括起来。问题是我正在搜索的字符串也用双引号括起来,这就是我用单引号括起整个正则表达式的原因。我还尝试用双引号括起来并转义双引号,但它没有用。

对单引号和双引号转义背后的逻辑的解释将非常有用。

1 个答案:

答案 0 :(得分:1)

使用双引号将sed命令引用为

sed -i "s/\"${FOO}\"/bar/m" file.txt

测试:

$ echo $b
hello
$ echo \"hello\" | sed "s/\"$b\"/asdf/"
asdf