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
我想用 字符串变量 更改字符串。该字符串由 '"+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