sed命令如何同时匹配双引号和单引号?

How to match double and single quotes at the same time with the sed command?

我想用 字符串变量 更改字符串。该字符串由 '"+a+"' 组成(这正是字符串,没有添加额外的引号。例如,字符串 "foo" 和字符串 foo 我的示例是第二个 foo)

是否可以使用 sed 命令更改它?

我想用一个变量替换它。我试过这个:

sed "s#'"+a+"'#${var}#" 
sed "s#'\"+a+\"'#${var}#" 
sed "s#'[\"]+a+[\"]'#${var}#"

感谢您的回答!

可以使用 BSD sed(例如 macOS):sed "s/\'\"\+\a\+\"\'/$var/g"

这很丑陋但它有效(GNU sed):sed "s/[\'][\"][\+]a[\+][\"][\']/$var/g"

也许也使用变量进行搜索。

var=_FOO_
search=$'\'"+a+"\''
echo "mama${search}papa" | sed  "s#${search}#${var}#"

输出

mama_FOO_papa

$' ' 是 bash 样式引用。

search=$'\'"+a+"\'';  echo "$search"

输出

'"+a+"'

您的 sed 表达式中有错字 - 您缺少 a 之后的第二个 + 符号 :)

$ var=" else "
$ echo "something'\"+a+\"'cool" | sed "s#'\"+a+\"'#${var}#"
something else cool