["]でくくられた文字列内に存在する[,]をsedで処理する正規表現について
PostgreSQLを使うのは初心者です。
csvファイルよりCOPYコマンドを使ってPostgreSQLのテーブルにデータを入れようとしています。
もとになるcsvファイルは、データの区切りは[,]であり、文字列は["]でくくられ、さらに["]でくくられた文字列には[,]が存在します。
<csvデータ例>
123,"aaa","b,cde",234
いろいろ調べてみた結果、COPYコマンドを実行する前に、sedコマンドで正規表現を用いて置換をすればよいとの結論にたどり着いたので、
(1)["]でくくられた文字列内の[,]を[#]に置換する
→ [123,"aaa","b,cde",234] => [123,"aaa","b#cde",234] に置換したい
(2)["]を除く(sed 's/\"//g')
→ [123,"aaa","b#cde",234] => [123,aaa,b#cde,234] に置換したい
(3)[,]をtabに置換する(sed 's/,/\t/g')
→ [123,aaa,b#cde,234] => [123 aaa b#cde 234] に置換したい
(4)[#]を[,]に置換する(sed 's/#/,/g')
→ [123 aaa b#cde 234] => [123 aaa b,cde 234] に置換したい
を順番に行う処理を考えていますが、(1)で記述する正規表現がわかりません。
正規表現も初めて扱う初心者ですので、色々試してみましたが、うまく置換できません。
どなたかご教授の程をお願いします。
なお環境は、RedHatLinux9 + PostgreSQL-7.4.9です。
以上、宜しくお願い申し上げます。
お礼
ありがとうございます。 $$はmakefile内の記述でしたので、そうなってました。失礼しました。 後半の文字列部分にも\/を指定してたのでできなかったようです。 教えていただいた方法で変換できるようになりました。 ありがとうございました。