検索開始日と検索終了日の間の期間に該当する「誕生日の方」を抜き出し、表示したい。
毎月、「教会カレンダー」を作成し、誕生日の方のお名前を記入している。
そして、「教会カレンダー」を見ながら、その月に誕生日を迎える方に、「誕生日 お祝い葉書」を書いて送るのだ。
今までは、FileMaker Pro を立ち上げて、その月の誕生日該当者を検索していた。
それを、シェル芸を使って行いたい。
===> なんとか、できました! うれしいね!!
#!/bin/bash
# 実行時に指定された引数の数、つまり変数 $# の値が 2 でなければエラー終了。
if [ $# -ne 2 ]; then
echo "指定された引数は$#個です。" 1>&2
echo "実行するには2個の引数が必要です。" 1>&2
exit 1
fi# シェル変数を二つ設定する。start_day=検索開始日。end_day=検索終了日。
# nkf で、改行コードを Unix 形式に変える。
# gsed で、1973.5.31 という日付表示を 1973/5/31 という表示形式に変える。
# この段階で一回、ファイルに書き出しておく。何か別の目的で使えるかもしれないので。# 「0531」などと表現された誕生日のうち、awk で、検索開始日と検索終了日の範囲に該当する者を抜き出す。
# ただし、召天者ははじく。
# sort して、less で表示。start_day="$1"
end_day="$2"cat ~/ファイルのあるディレクトリ/asty-ch_member.tab | nkf -Luw | gsed -e 's|\(....\)\.\(.\?\)\.\(.\?\)|\1/\2/\3|g' > ~/ファイルのあるディレクトリ/asty-ch_bsearch.txt
cat ~/ファイルのあるディレクトリ/asty-ch_bsearch.txt | awk '{if($9 >= '${start_day}' && $9 <= '${end_day}' && $7 != "召天者")print $9,$1,$7,$6,$10,$11,$8}' | sort | less
我流だし、まだまだ工夫の余地はあるのだろうけれど、自分なりに書いた、記念すべき「初めてのシェルスクリプト」(もちろん、よく分かっていないところも多々あります・・・) 。
誕生日検索なので、birthday_search.sh と名付けました!
No comments:
Post a Comment