替换字符串中的模式

替换字符串中的模式

如何用以下字符串替换字符串中的每个逗号 单引号 逗号 单引号

例子:

US1,US2,US3 ->  US1','US2,','US3

我尝试使用以下命令

a=US1,US2
echo ${a/,/\',\'}

但它仅替换第一个逗号,而不是全部。

我知道如何使用 sed 来实现此目的,但我正在寻找更简短的解决方案。

答案1

要使用参数扩展替换字符串的所有实例,请使用以下语法将每个“needle”更改$haystack为“pin”:

echo "${haystack//needle/pin}"

例如:

$ foo="yabbadabbadoo"
$ echo "${foo//a/_}"
y_bb_d_bb_doo

不过,您必须转义特殊字符:

$ foo="milk,eggs,pancake mix,butter"
$ echo "${foo//,/','}"
milk,eggs,pancake mix,butter
$ echo "${foo//,/\',\'}"
milk','eggs','pancake mix','butter

相关内容