linux awk コマンドを使ってデータ抽出し sort コマンドで並び替える
awk コマンドを使ってデータ抽出し sort コマンドで並び替える
awk コマンドでデータ抽出
「全国都道府県庁・市区町村役場データベース【9.全国都道府県庁・市区町村役場データベース 件数表】のページから都道府県コードと都道府県名を抽出します。
9.全国都道府県庁・市区町村役場データベース 件数表 2018年9月現在
都道府県 県庁 政令市 特別区 市役所 区役所 町役場 村役場 総合計
01 北海道 1 1 0 34 10 129 15 190
02 青森県 1 0 0 10 0 22 8 41
03 岩手県 1 0 0 14 0 15 4 34
04 宮城県 1 1 0 13 5 21 1 42
05 秋田県 1 0 0 13 0 9 3 26
06 山形県 1 0 0 13 0 19 3 36
07 福島県 1 0 0 13 0 33 15 62
08 茨城県 1 0 0 32 0 10 2 45
09 栃木県 1 0 0 14 0 11 0 26
10 群馬県 1 0 0 12 0 15 8 36
11 埼玉県 1 1 0 39 10 22 1 74
12 千葉県 1 1 0 37 6 16 1 62
13 東京都 1 0 24 26 0 5 8 64
14 神奈川県 1 3 0 16 28 13 1 62
15 新潟県 1 1 0 19 8 6 4 39
16 富山県 1 0 0 10 0 4 1 16
17 石川県 1 0 0 11 0 8 0 20
18 福井県 1 0 0 9 0 8 0 18
19 山梨県 1 0 0 13 0 8 6 28
20 長野県 1 0 0 19 0 23 35 78
21 岐阜県 1 0 0 21 0 19 2 43
22 静岡県 1 2 0 21 10 12 0 46
23 愛知県 1 1 0 37 16 14 2 71
24 三重県 1 0 0 14 0 15 0 30
25 滋賀県 1 0 0 14 0 6 0 21
26 京都府 1 1 0 14 11 10 1 38
27 大阪府 1 2 0 31 31 9 1 75
28 兵庫県 1 1 0 28 9 14 0 53
29 奈良県 1 0 0 12 0 15 12 40
30 和歌山県 1 0 0 9 0 20 1 31
31 鳥取県 1 0 0 4 0 14 1 20
32 島根県 1 0 0 8 0 10 1 20
33 岡山県 1 1 0 14 4 10 2 32
34 広島県 1 1 0 13 8 9 0 32
35 山口県 1 0 0 13 0 6 0 20
36 徳島県 1 0 0 8 0 15 1 25
37 香川県 1 0 0 8 0 9 0 18
38 愛媛県 1 0 0 11 0 9 0 21
39 高知県 1 0 0 12 0 17 6 36
40 福岡県 1 2 0 27 14 29 2 75
41 佐賀県 1 0 0 10 0 10 0 21
42 長崎県 1 0 0 13 0 8 0 22
43 熊本県 1 1 0 14 5 23 8 52
44 大分県 1 0 0 14 0 3 1 19
45 宮崎県 1 0 0 9 0 14 3 27
46 鹿児島県 1 0 0 19 0 20 4 44
47 沖縄県 1 0 0 11 0 11 19 42
合計 47 20 24 776 175 748 183 1、973
いらない行の1行、2行および50行を vi エディタで削除し、ファイル名を sourc.txt とします。
awk コマンドを使って source.txt の 都道府県番号と都道府県名および県庁・市区町村役場の総数だけを抽出します。
02 青森県 41
03 岩手県 34
04 宮城県 42
05 秋田県 26
06 山形県 36
07 福島県 62
08 茨城県 45
09 栃木県 26
10 群馬県 36
11 埼玉県 74
12 千葉県 62
13 東京都 64
14 神奈川県 62
15 新潟県 39
16 富山県 16
17 石川県 20
18 福井県 18
19 山梨県 28
20 長野県 78
21 岐阜県 43
22 静岡県 46
23 愛知県 71
24 三重県 30
25 滋賀県 21
26 京都府 38
27 大阪府 75
28 兵庫県 53
29 奈良県 40
30 和歌山県 31
31 鳥取県 20
32 島根県 20
33 岡山県 32
34 広島県 32
35 山口県 20
36 徳島県 25
37 香川県 18
38 愛媛県 21
39 高知県 36
40 福岡県 75
41 佐賀県 21
42 長崎県 22
43 熊本県 52
44 大分県 19
45 宮崎県 27
46 鹿児島県 44
47 沖縄県 42
sort コマンドでデータの並び替え
県庁・市区町村役場総数の多い順番で、都道府県名コード順に表示させたい時は sort コマンドを使います。
20 長野県 78
27 大阪府 75
40 福岡県 75
11 埼玉県 74
23 愛知県 71
13 東京都 64
07 福島県 62
12 千葉県 62
14 神奈川県 62
28 兵庫県 53
43 熊本県 52
22 静岡県 46
08 茨城県 45
46 鹿児島県 44
21 岐阜県 43
04 宮城県 42
47 沖縄県 42
02 青森県 41
29 奈良県 40
15 新潟県 39
26 京都府 38
06 山形県 36
10 群馬県 36
39 高知県 36
03 岩手県 34
33 岡山県 32
34 広島県 32
30 和歌山県 31
24 三重県 30
19 山梨県 28
45 宮崎県 27
05 秋田県 26
09 栃木県 26
36 徳島県 25
42 長崎県 22
25 滋賀県 21
38 愛媛県 21
41 佐賀県 21
17 石川県 20
31 鳥取県 20
32 島根県 20
35 山口県 20
44 大分県 19
18 福井県 18
37 香川県 18
16 富山県 16
linux を使っている人なら、awk コマンドと sort コマンドで簡単に処理する事ができます。
sed コマンドを使って整形
sed コマンドを使って各データをWeb表示したいので行頭に<li≶行末にを付加する次の通り実行するだけです。
awk コマンドを使って整形
今回はWebサイト用に表示する時に色を付けたいので、awk コマンドを使ってデータを装飾します。
1 | 1 | 北海道 | 190 |
2 | 20 | 長野県 | 78 |
3 | 27 | 大阪府 | 75 |
4 | 40 | 福岡県 | 75 |
5 | 11 | 埼玉県 | 74 |
6 | 23 | 愛知県 | 71 |
7 | 13 | 東京都 | 64 |
8 | 7 | 福島県 | 62 |
9 | 12 | 千葉県 | 62 |
10 | 14 | 神奈川県 | 62 |
11 | 28 | 兵庫県 | 53 |
12 | 43 | 熊本県 | 52 |
13 | 22 | 静岡県 | 46 |
14 | 8 | 茨城県 | 45 |
15 | 46 | 鹿児島県 | 44 |
16 | 21 | 岐阜県 | 43 |
17 | 4 | 宮城県 | 42 |
18 | 47 | 沖縄県 | 42 |
19 | 2 | 青森県 | 41 |
20 | 29 | 奈良県 | 40 |
21 | 15 | 新潟県 | 39 |
22 | 26 | 京都府 | 38 |
23 | 6 | 山形県 | 36 |
24 | 10 | 群馬県 | 36 |
25 | 39 | 高知県 | 36 |
26 | 3 | 岩手県 | 34 |
27 | 33 | 岡山県 | 32 |
28 | 34 | 広島県 | 32 |
29 | 30 | 和歌山県 | 31 |
30 | 24 | 三重県 | 30 |
31 | 19 | 山梨県 | 28 |
32 | 45 | 宮崎県 | 27 |
33 | 5 | 秋田県 | 26 |
34 | 9 | 栃木県 | 26 |
35 | 36 | 徳島県 | 25 |
36 | 42 | 長崎県 | 22 |
37 | 25 | 滋賀県 | 21 |
38 | 38 | 愛媛県 | 21 |
39 | 41 | 佐賀県 | 21 |
40 | 17 | 石川県 | 20 |
41 | 31 | 鳥取県 | 20 |
42 | 32 | 島根県 | 20 |
43 | 35 | 山口県 | 20 |
44 | 44 | 大分県 | 19 |
45 | 18 | 福井県 | 18 |
46 | 37 | 香川県 | 18 |
47 | 16 | 富山県 | 16 |
target.txt という名前で保存するのならリダイレクトして書き出します。
リダイレクトとは標準出力や標準入力、標準エラー出力が向かう先を変更する事です。
今回の場合は > で画面出力をtarget.txt ファイルにリダイレクトしています。
コマンドを組み合わせて処理をする
Linux を使いこなしてくると、複数のコマンドをパイプでつないで処理が行えるようになります。
今回は、sed と awk というプログラムを使って処理をしましたが、linuxにはまだまだ便利なツールが豊富に揃っています。
今回は触れませんでしたが「正規表現」というlinuxを使いこなす上で知っておく決まりがあります。
このサイトでも、今後「正規表現」について取り上げたいと思っています。