ファイル整理
こんにちは。
今日も在宅勤務しています。日曜日ですが・・・
外にも出られずモンモンとしているので,作業します。
今日の作業は下の表のような複数の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