"
ファイル内のすべてのエントリをコンマ()で始まる、または行の先頭にない限り、次に置き換えたいと思います。^"
"
,
つまり
"InvoiceA","Doe,John",12/01/2016,200,"Comment on Invoice: "Customer X purchased item Z from store C named "Abc" on "03/04/2016""
-に変換する必要があります。
"InvoiceA","Doe,John",12/01/2016,200,"Comment on Invoice: ^"Customer X purchased item Z from store C named ^"ABC^" on ^"03/04/2016^""
答え1
私は(あなたの例のように)行末の引用符文字を変更せずにそのままにしたいとします。あなたはこれを行うことができます
sed 's/\([^,]\)"\([^,]\)/\1^"\2/g'
これにより、3 つの連続した文字で構成される文字列が検索されます。
- カンマ()以外の文字
,
、 - 二重引用符(
"
)と - カンマ以外の文字、
そしてそれらを次に置き換えます。
- 最初の役割、
^"
と- 3番目の役割。
たとえば、複数の連続した引用符文字では機能しません。
…200,"Purchase at store named "" on Tuesday"
PS:あなたの例に不均衡な引用があることをご存知ですか?
"Comment on Invoice: "Customer X purchased item Z from store C named "Abc" on "03/04/2016""
↑ ↑ ↑ ↑ ↑