2012年 11月 1日 掲載
日本鳥類目録が改訂され,書籍も販売されているのだが, 1冊 5,500円という値段はちょっと,いや,かなり高い. バードウォッチャーが探鳥記録の整理に使う程度であれば,日本鳥学会の以下のページ,
に掲載されている「掲載鳥類リスト」の Excelファイル程度のものがあれば十分だろう. だが,この Excelファイルは,目・科・属・種・亜種ごとに列の内容が異なっており, かなり使いかってがわるい. ということで,あつかいやすいように加工してみた.
Microsoft Excel で「掲載鳥類リスト(JPBirdList_7ed_ver1.xls)」に若干の下処理を施し,AWKスクリプトで整形を行う.
今回,加工を行った環境は以下のとおりである.
まずは,JPBirdList_7ed_ver1.xls を Microsoft Excel で開き,「PartA自然分布種」シートの「B」列の内容を以下のように英語(半角)に置換する.
ここで,置換するのは「B」列だけである. 全体で置換を行うと「キジ目」が「キジorder」になったりして,めんどうなことになる. また,「亜種」より先に「種」を置換してしまうと, 「亜species」みたいなものができてしまい、 やはりめんどうになるので注意しよう。
1〜7行は,あってもこの後の処理に影響はないが, わずらわしいので削除してしまおう.
このように下処理を行ったシートを,「テキスト(タブ区切り)(*.txt)」形式で保存をする. 保存した タブ区切りファイル(今回は,JPBirdList_7ed_ver1.txt という名前で保存した)は, 次のようなテキストファイルになっているはずである.
1 order GALLIFORMES キジ目 2 family PHASIANIDAE キジ科 3 genus TETRASTES Keyserling & Blasius エゾライチョウ属 4 species 1 Tetrastes bonasia "(Linnaeus, 1758)" エゾライチョウ 5 variety 1 1 Tetrastes bonasia vicinitas "Riley, 1915" エゾライチョウ 6 genus LAGOPUS Brisson ライチョウ属 7 species 2 Lagopus muta "(Montin, 1781)" ライチョウ 8 variety 2 1 Lagopus muta japonica "Clark, 1907" ライチョウ 9 genus COTURNIX Garsault ウズラ属 10 species 3 Coturnix japonica "Temminck & Schlegel, 1849" ウズラ : :
これを,Cygwin上の awk で処理をする.
JPBirdList_7ed_ver1.txt はタブ区切りで,
となっているので,次のようなスクリプト convert_JPBirdList.awk
BEGIN{ FS="\t" OFS="\t" } $2=="order"{ print $2, $4, $3, "\r" } $2=="family"{ print $2, $4, $3, "\r" } $2=="genus"{ print $2, $5, $3, "\r" } $2=="species"{ print $2, $7, $4 " " $5, "\r" } $2=="variety"{ print $2, $9, $5 " " $6 " " $7, "\r" }
を通せば,「分類,和名,学名」の3列の タブ区切りファイルができる (※ awk の出力する改行コードが UNIX の LF なので,上のスクリプトでは "\r" を追加することにより,出力の改行コードを Windows の CR+LF になおしている).
$ awk -f convert_JPBirdList.awk JPBirdList_7ed_ver1.txt > jbl7a.txt
できあがった jbl7a.txt は,次のような形になっている.
order キジ目 GALLIFORMES family キジ科 PHASIANIDAE genus エゾライチョウ属 TETRASTES species エゾライチョウ Tetrastes bonasia variety エゾライチョウ Tetrastes bonasia vicinitas genus ライチョウ属 LAGOPUS species ライチョウ Lagopus muta variety ライチョウ Lagopus muta japonica genus ウズラ属 COTURNIX species ウズラ Coturnix japonica : :
このような形にしてしまえば,あとは好きなように加工ができる.
たとえば jbl7a.txt を,次のようなスクリプト convert_jbl.awk
BEGIN{ FS="\t" } $1=="order"{ print "\r\n* " $2 " " $3 " *\r\n\r" } $1=="family"{ print " [ " $2 " " $3 " ]\r" } $1=="genus"{ print " < " $2 " " $3 " >\r" } $1=="species"{ print " " $2 " " $3 "\r" } $1=="variety"{ print " ( " $2 " " $3 " )\r" }
に通してみる.
$ awk -f convert_jbl.awk jbl7a.txt > japan_bird_list7a.txt
japan_bird_list7a.txt は,和名と学名を併記した次のような形になる.
* キジ目 GALLIFORMES * [ キジ科 PHASIANIDAE ] < エゾライチョウ属 TETRASTES > エゾライチョウ Tetrastes bonasia ( エゾライチョウ Tetrastes bonasia vicinitas ) < ライチョウ属 LAGOPUS > ライチョウ Lagopus muta ( ライチョウ Lagopus muta japonica ) < ウズラ属 COTURNIX > ウズラ Coturnix japonica : :
和名だけのリストを作るには,2列目だけを出力すればよいが, 種と同じ名前の亜種があるので,それを出力しないようにするとよいだろう. 次のようなスクリプト convert_jbl_j.awk
BEGIN{ FS="\t" species="" } $1=="order"{ print "\r\n* " $2 " *\r\n\r" } $1=="family"{ print " [ " $2 " ]\r" } $1=="genus"{ print " < " $2 " >\r" } $1=="species"{ print " " $2 "\r" species = $2 } $1=="variety" && $2 != species{ print " ( " $2 " )\r" }
を書いてみた.このスクリプトに jbl7a.txt を通す.
$ awk -f convert_jbl_j.awk jbl7a.txt > japan_bird_list7a_j.txt
できあがった japan_bird_list7a_j.txt は以下のような形になる.
* キジ目 * [ キジ科 ] < エゾライチョウ属 > エゾライチョウ < ライチョウ属 > ライチョウ < ウズラ属 > ウズラ < ヤマドリ属 > ヤマドリ ( ウスアカヤマドリ ) ( シコクヤマドリ ) : :
「PartB外来種」のシートも同じように加工することができる.
あとは,Microsoft Word などで読みこんで,段組みでもして印刷すればよい.
[ KDOホームにもどる ]
(C) 2012 KDO