両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
2022_11_18_魚種の学名・和名変換dbの作成スクリプト [2022/11/25 06:29] – 133.11.50.163 | 2022_11_18_魚種の学名・和名変換dbの作成スクリプト [Unknown date] (現在) – 削除 - 外部編集 (Unknown date) 127.0.0.1 |
---|
``` | |
#!/bin/bash | |
| |
#このスクリプトでは、学名を和名に変換するデータベースを生成する。inputするファイルは鹿児島大学の日本産魚類全種リストを用いる(https://www.museum.kagoshima-u.ac.jp/staff/motomura/jaf.html) | |
if [ "$1" = "" ]; then echo 'USAGE: bash '$0' <input.url #https://www.museum.kagoshima-u.ac.jp/staff/motomura/20221121_JAFList.xlsx>'; exit ;fi | |
| |
set -ex | |
| |
# フォルダ等の設定を読み込み | |
sdir=$(dirname `readlink -f "$0" || echo "$0"`) | |
source "$sdir"/config.sh | |
| |
#データベースのダウンロード | |
wget -O /tmp/specieslist.xlsx $1 | |
| |
#xlsx2csvのインストール | |
#pip install --user xlsx2csv | |
| |
#xlsxをcsvに変換し、学名と和名だけを抽出。 | |
| |
#学名に関して、属名と種小名の2単語のみを抽出したDBの作成 | |
#セル内カンマ、セル内改行に対応させるためawk FPAT, nextを使う | |
xlsx2csv /tmp/specieslist.xlsx | awk -v FPAT='[^,]*|"[^"]+"' '{ | |
l=l$0;if(l!=""&&split(l,t,"\"")%2==0){l=l" ";next};$0=l;l=""; for(i=1;i<=NF;i++){sub("^\"","",$i); sub("\"$","",$i)}; | |
if($4!="和名なし"){split($5,array," "); print $4"\t"array[1]" "array[2]} | |
}' > $workdir/db/scientificname2japanesename_2words.csv | |
| |
#学名に関して、3単語以上の場合においても全てを抽出したDBの作成 | |
#セル内カンマ、セル内改行に対応させるためawk FPAT, nextを使う | |
xlsx2csv /tmp/specieslist.xlsx | awk -v FPAT='[^,]*|"[^"]+"' '{ | |
l=l$0;if(l!=""&&split(l,t,"\"")%2==0){l=l" ";next};$0=l;l=""; for(i=1;i<=NF;i++){sub("^\"","",$i); sub("\"$","",$i)}; | |
if($4!="和名なし"){print $4"\t"$5} | |
}' > $workdir/db/scientificname2japanesename_complete.csv | |
| |
#xlsx2csv -e -d tabを使うのが最も効率的かも? | |
#xlsx2csv -e -d tab /tmp/specieslist.xlsx |awk -F"\t" '{if($4!="和名なし")print $4"\t"$5}'|awk -F"\t" '{split($2,array," ");print $1"\t"array[1]" "array[2];}' > $workdir/db/scientificname2japanesename_2words.csv | |
#xlsx2csv -e -d tab /tmp/specieslist.xlsx |awk -F"\t" '{if($4!="和名なし")print $4"\t"$5}' > $workdir/db/scientificname2japanesename_complete.csv | |
| |
#欠落している種を手動で追加 | |
cat $workdir/db/additional_species_2words.csv >> $workdir/db/scientificname2japanesename_2words.csv | |
cat $workdir/db/additional_species_complete.csv >> $workdir/db/scientificname2japanesename_complete.csv | |
``` | |