bash とか emacs とか python とか etc

bash とか emacs とか python とか etc

ファイル操作。。。ぐだぐだ

下記のようなCSVファイル

 

ファイル名:hoge.csv

(1行目:)"タイトル"

(2行目:)"日付","項目1","項目2","項目3"

(3行目:)"2020-04-23","北海道","ほげ","3,500"

(4行目:)"2020-04-24","東京都","あげ","2,323"

........

を,3行目(実際のファイルには()内の~行目とかはついてないよ)以降を抽出し,各行の先頭にユニークID(ファイル名(.csvは除く)- レコードNo(1,2,…))を付与し,hoge_new.csvファイルを生成するスクリプトを考えた。やっかいなのは,ダブルクォートと桁区切りのカンマだ。

$ awk 'BEGIN{FS=","; OFS=":"}NR>=3{print} hoge.csv | sed 's/"/@/g' | sed 's/,//g' | sed 's/@/:/g' | awk '{print $2, $4, $6, $8}' > hoge.txt
$ cat -n hoge.txt | sed 's/\t/:/g' | sed 's/ //g' > hoge.dat
$ grep -H "" hoge.dat | sed 's/\.dat//g' | awk 'BEGIN{FS=":"; OFS=","}{print $1 "-" $2, $3, $4, $5, $6} > hoge_new.csv
$ rm *.txt *.dat

 てな具合。もっとスマートにできないかなぁ・・・。