Skip to content

Instantly share code, notes, and snippets.

@sechiro
Last active August 29, 2015 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sechiro/99c2b924977f8ce43c75 to your computer and use it in GitHub Desktop.
Save sechiro/99c2b924977f8ce43c75 to your computer and use it in GitHub Desktop.
Googleからエクスポートしたvcf形式のアドレス帳のふりがなをGratinaで読み込めるよう変換するスクリプト
#!/bin/bash
#
# Googleからエクスポートしたvcf形式のアドレス帳のふりがなをGratinaで読み込めるよう変換するスクリプト
# 変換元ファイルは以下の手順でエクスポートしてください。
# Gmail -> 連絡先 -> その他 -> エクスポート-> vCard 形式(Apple アドレスブックやその他のアプリケーションへのインポート用)
#
# Usage: bash addressbook-convert.sh [input_file(default:contacts.vcf)] [output_file(default:contacts-converted.vcf)]
#
set -ue
input_file=${1:-contacts.vcf}
output_file=${2:-contacts-converted.vcf}
cp $input_file $output_file
SEION='アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン'
HIRA_SEION='あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん'
KIGOU='〜ー'
H_SEION='アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン'
H_KIGOU='~ー'
YOUSOKUON='ッァィゥェォャュョ' # 半角には「ヮ」は存在しないため変換不可
HIRA_YOUSOKUON='っぁぃぅぇぉゃゅょ' # 半角には「ヮ」は存在しないため変換不可
H_YOUSOKUON='ッァィゥェォャュョ'
# 濁音、半濁音は清音と濁点、半濁点の二文字になるため、先に清音+濁点に変換
DAKUON='ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ'
HIRA_DAKUON='ゔがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ'
SEION_PART='ウカキクケコサシスセソタチツテトハヒフヘホハヒフヘホ'
# forループに渡すため、一文字ずつ分解
DAKUON_SPLIT=`echo $DAKUON $HIRA_DAKUON|fold -w1`
for letter in $DAKUON_SPLIT
do
# Macのsedの-iオプションは、バックアップファイル名の指定必須で""を置いてバックアップなしとする
sed -i "" -e "/X-PHONETIC-LAST-NAME:/s/$letter/${letter}゙/g" $output_file
done
sed -i "" -e "/X-PHONETIC-LAST-NAME:/y/$DAKUON/$SEION_PART/" $output_file
sed -i "" -e "/X-PHONETIC-LAST-NAME:/y/$HIRA_DAKUON/$SEION_PART/" $output_file
# 全角半角変換
sed -i "" -e "/X-PHONETIC-LAST-NAME:/y/$SEION/$H_SEION/" $output_file
sed -i "" -e "/X-PHONETIC-LAST-NAME:/y/$HIRA_SEION/$H_SEION/" $output_file
sed -i "" -e "/X-PHONETIC-LAST-NAME:/y/$YOUSOKUON/$H_YOUSOKUON/" $output_file
sed -i "" -e "/X-PHONETIC-LAST-NAME:/y/$HIRA_YOUSOKUON/$H_YOUSOKUON/" $output_file
sed -i "" -e "/X-PHONETIC-LAST-NAME:/y/$KIGOU/$H_KIGOU/" $output_file
# 項目名を変換
sed -i "" -e "s/X-PHONETIC-LAST-NAME:/SORT-STRING;CHARSET=SHIFT_JIS:/" $output_file
# SHIFT-JISに変換
nkf --overwrite -W8 -sx $output_file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment