awk コマンドを使ってデータ抽出し sort コマンドで並び替える

awk コマンドを使ってデータ抽出し sort コマンドで並び替える

awk コマンド

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 の 都道府県番号と都道府県名および県庁・市区町村役場の総数だけを抽出します。

cat source.txt | awk ‘{print $1,$2,$10}’

 

01 北海道 190
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 コマンドを使います。

sort -n -k 3rn,3 -k 1n,1 target.txt

 

01 北海道 190
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≶行末に</li>を付加する次の通り実行するだけです。

$ cat source.txt | sed sed ‘s/\/li>/\/li>\n/g’

awk コマンドを使って整形

今回はWebサイト用に表示する時に色を付けたいので、awk コマンドを使ってデータを装飾します。

cat target.txt |awk ‘{print sprintf(“<tr><td bgcolor=\”#e2ffc6\” align=\”right\”>  %3d </td>”,NR), sprintf(“<td bgcolor=\”ffffc6\” align=\”right\”>  %3d </td>”,$1), sprintf(“<td bgcolor=\”ffe2c6\” align=\”center\”>  %11s </td>”,$2),sprintf(“<td bgcolor=\”c6c6ff\” align=\”right\”>  %3d </td></tr>”,$3)}’

 

   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を使いこなす上で知っておく決まりがあります。
このサイトでも、今後「正規表現」について取り上げたいと思っています。