我想搜索由位置参数给出的双引号括起来的字符串。这就是我所做的:
#!/bin/bash
FOO=$0
sed -i 's/"${FOO}"/bar/m' file.txt
"$FOO"
和\"a${FOO}\"/
都不起作用。
我知道要扩展变量,你必须将整个正则表达式用双引号(sed substitution with bash variables)括起来。问题是我正在搜索的字符串也用双引号括起来,这就是我用单引号括起整个正则表达式的原因。我还尝试用双引号括起来并转义双引号,但它没有用。
对单引号和双引号转义背后的逻辑的解释将非常有用。
答案 0 :(得分:1)
使用双引号将sed命令引用为
sed -i "s/\"${FOO}\"/bar/m" file.txt
测试:
$ echo $b
hello
$ echo \"hello\" | sed "s/\"$b\"/asdf/"
asdf