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

问题描述 投票:0回答:2

我想用字符串变量更改一个字符串。字符串由'"+a+"'组成(这恰好是字符串,没有添加任何引号。例如,具有字符串"foo"和字符串foo的示例是第二个foo

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

我想用一个变量替换它。我已经试过了:

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

谢谢您的回答!

bash sed quotes
2个回答
0
投票

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

这很丑,但它可以工作(GNU sed):sed "s/[\'][\"][\+]a[\+][\"][\']/$var/g"


0
投票

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

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

输出

mama_FOO_papa

$' '是bash样式的引用。

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

输出

'"+a+"'
© www.soinside.com 2019 - 2024. All rights reserved.