文字列のパターンを置き換える

文字列のパターンを置き換える

文字列のすべてのカンマ一重引用符をコンマ一重引用符に置き換える方法

例:

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

次のコマンドを試してみました。

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

ただし、これはすべてではなく、最初のカンマのみを置き換えます。

私はこれを達成するためにsedを使用する方法を知っていますが、より短い解決策を探しています。

答え1

文字列のすべてのインスタンスをパラメータ拡張に置き換えるには、次の$haystack構文を使用して各「針」を「ピン」に変更します。

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

関連情報