bash とか emacs とか python とか etc

bash とか emacs とか python とか etc

ファイル整理

こんにちは。

 

今日も在宅勤務しています。日曜日ですが・・・

外にも出られずモンモンとしているので,作業します。

 

今日の作業は下の表のような複数のCSVファイルをタイトルとインデックスを除いたデータのみ取り出して上下に繋げて一つのCSVファイルにします。

 

表1 加工するCSVファイル

Title                    
年月日 項目1 項目2 項目3 項目4 項目5 項目6 項目7 項目8 項目9 項目10
4月10日 a b c d e f g h i j

 

どうするか,というと

まずは,catで各ファイルを読み込んでみます。

エクセルで作成(?)したファイルなので,Shift-jis。なので,nkf -wでUTF-8に変換後にcat。すると"Title",・・\n "4月10日",・・・・と,ダブルクォーテーションが付いてしまう。

sed 's/"//g' で除去し,と思ったら,数字の千区切りの","がフィールド区切りと認識してしまうので,よろしくない。

""は残してフィールド区切りにし,奇数列を除去が良いか・・・

 sed 's/"/@/g' P03031003-200408.csv | awk 'BEGIN{FS="@"}NR>2{print}' | sed 's/,//g' | awk 'BEGIN{FS="@";OFS=","}{print $2,$4,$6,$8,$10,$12,$14,$16,$18,$20,$22,$24,$26,$28,$30}' > test.csv

で15列目までできるんだけど。かなり冗長。しかも,同一フォルダのファイル全てに一括変換できない。for i in f$.csv とか使えばできるけど面倒。パイプを区切ってひとつづつやるかなぁ・・・

なにか良いアイデアある人いたらコメねがいますm__m