カンマ区切りの一重引用符文字列を置き換える

カンマ区切りの一重引用符文字列を置き換える

以下のサンプルデータがあります。

'1','2','3,3','4'

sedコマンドを見つけて、次のように変更しようとしています。

'1','2','NEW','4'

まず、次の例を試しました。

1,2,3,4

このsedは動作します

's/[^,]*/NEW/'3

結果

1,2,NEW,4

しかし、以下のサンプルデータでは何をすべきかわかりません。

'1','2','3,3','4'

助ける?

答え1

おそらく最も簡単な解決策は、外部で二重引用符を使用することです。

$ echo "'1','2','3,3','4'" | sed "s/'[^']*'/'NEW'/3"
'1','2','NEW','4'

それ以外の場合は、同様のシーケンスを使用して'\''エスケープされたリテラル引用符の周りの単一引用符を閉じて再度開くことができます。

$ echo "'1','2','3,3','4'" | sed 's/'\''[^'\'']*'\''/'\''NEW'\''/3'
'1','2','NEW','4'

関連情報