ダブルコーテーションの中のカンマを取り除く。

ダブルコーテーションの中のカンマを取り除く。

$ cat tmp
1,2,3,"abc,efg",5
1,2,3,"abc,efg",5
1,2,3,"abc,efg",5
1,2,3,"abc,efg",5
$ sed "s/\"\(.*\),\(.*\)\"/\"\1\2\"/g" tmp
1,2,3,"abcefg",5
1,2,3,"abcefg",5
1,2,3,"abcefg",5
1,2,3,"abcefg",5


解説:

sedは置換コマンド。
\"は「ダブルコーテーション」は
エスケープする必要があるので、
\でエスケープする。
.*は任意の一文字以上の文字列を
表す正規表現
\".*,.*\"で、ダブルコーテーション
で囲まれた,を含む任意の文字列を
表す正規表現。
\(\)で囲んだ正規表現は
\1,\2,...と後で再利用できる。
後半で、選ばれた文字列を再利用することを考えて、.*を\(\)で囲む
と
\"\(.*\),\(.*\)\"
となる。
\1はカンマの前の文字列、
\2はカンマの後ろの文字列に
対応する。