KEN_ALL.CSV(郵便番号データ)をsed等を使って、都道府県毎に分解したCSVファイルを作成してみました。
確認環境
[ec2-user@ip-192-168-X-XX ~]$ cat /etc/*-release NAME="Amazon Linux AMI" VERSION="2018.03" ID="amzn" ID_LIKE="rhel fedora" VERSION_ID="2018.03" PRETTY_NAME="Amazon Linux AMI 2018.03" ANSI_COLOR="0;33" CPE_NAME="cpe:/o:amazon:linux:2018.03:ga" HOME_URL="http://aws.amazon.com/amazon-linux-ami/" Amazon Linux AMI release 2018.03 [ec2-user@ip-192-168-X-XX ~]$ sed --version GNU sed version 4.2.1 Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law.
KEN_ALL.CSVファイルの内容(一部抜粋)
01101,"060 ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0
01101,"064 ","0640941","ホッカイドウ","サッポロシチュウオウク","アサヒガオカ","北海道","札幌市中央区","旭ケ丘",0,0,1,0,0,0
01101,"060 ","0600041","ホッカイドウ","サッポロシチュウオウク","オオドオリヒガシ","北海道","札幌市中央区","大通東",0,0,1,0,0,0
01101,"060 ","0600042","ホッカイドウ","サッポロシチュウオウク","オオドオリニシ(1-19チョウメ)","北海道","札幌市中央区","大通西(1~19丁目)",1,0,1,0,0,0
01101,"064 ","0640820","ホッカイドウ","サッポロシチュウオウク","オオドオリニシ(20-28チョウメ)","北海道","札幌市中央区","大通西(20~28丁目)",1,0,1,0,0,0
...
コード
※処理にあたり、KEN_ALL.CSVをUTF8に変換しています。
#!/usr/bin/bash # 7列目(漢字都道府県名)でグルーピングして都道府県名リストを作成 # ”北海道"のような結果が得られるため、「"」を除去しておく pref_names=`cat ken_all.csv | cut -d , -f 7 | sed -e "s/\"//g" |sort | uniq` for pref_name in ${pref_names}; do # 都道府県名を含む行を抽出して、<都道府県名>.csvを作成する # sed -neの「n」は結果に合致する行のみを出力するオプション # 「//p」は処理内容を出力するスクリプトコマンド(上述の -nと一緒に使用する) cat ken_all.csv | sed -ne "/${pref_name}/p" > ./csvs/${pref_name}.csv done
実行結果と結果の確認
都道府県毎に作成されたファイルの件数、合計件数について、元ファイルの内容と一致しました。
[ec2-user@ip-192-168-X-XX csvs]$ ls -al total 17916 drwxrwxr-x 2 ec2-user ec2-user 4096 Jul 22 13:55 . drwx------ 5 ec2-user ec2-user 4096 Jul 22 14:05 .. -rw-rw-r-- 1 ec2-user ec2-user 333961 Jul 22 13:56 三重県.csv -rw-rw-r-- 1 ec2-user ec2-user 1135724 Jul 22 13:56 京都府.csv -rw-rw-r-- 1 ec2-user ec2-user 121807 Jul 22 13:56 佐賀県.csv -rw-rw-r-- 1 ec2-user ec2-user 759267 Jul 22 13:56 兵庫県.csv -rw-rw-r-- 1 ec2-user ec2-user 1304052 Jul 22 13:56 北海道.csv ... [ec2-user@ip-192-168-X-XX csvs]$ find ./ -type f -name "*.csv" | xargs wc -l 1426 ./徳島県.csv 3257 ./富山県.csv 877 ./宮崎県.csv 2072 ./岩手県.csv 950 ./山梨県.csv 2263 ./福井県.csv 1459 ./鹿児島県.csv 2516 ./青森県.csv 1397 ./鳥取県.csv 124263 total ...