広告
タスクシュートのログから出退勤の時間を抜き出すMac用のスクリプトを作りました。
毎月の勤怠を出すのが面倒
毎月、出勤時間と退勤時間を申告するのですが、それが面倒なのでタスクシュートのログから出勤、退勤を抜き出すスクリプトを作りました。
必要環境
- awkコマンドが使える環境(Macだと最初から入っていたかも。無ければhomebrewなどでインストールしてください)
仕様
社内で使っている出退勤のExcelツールに読ませる前提なので、ちょっとアウトプットは特殊です。
- タスクシュートのログから日ごとに出勤、退勤の時間を抜き出す
- 抜き出した結果は日ごとのファイルに出力する(yyyymmdd.txtの形式)
- 出力先のyyyymm*ファイルが削除されるので、出力先は専用のフォルダにしましょう
日ごとにファイルを作成するのが、ちょっと特殊ですね。
あと、中身は出来ればいいという感じで作ったものなので、スマートではないかもしれません。
スクリプト
month=201501
rm ${month}*.txt
cd (結果ファイルを出力するフォルダ)
nkf -w "(タスクシュートのログファイルのフォルダ)/★TaskChute_${month}.txt" | awk -F " " '{OFS="\t";print $3" "$6,$12}' | sort | egrep -A2 '出勤' > work.txt
nkf -w "(タスクシュートのログファイルのフォルダ)/★TaskChute_${month}.txt" | awk -F " " '{OFS="\t";print $3" "$5,$12}' | sort | egrep -B2 '帰宅' >> work.txt
cat work.txt | sort | nkf -s > work2.txt
cat work2.txt | while read line; do filename=`echo ${line} | awk -F "[/ ]" '{print $1$2$3}'`; printf "%s %s\t%s\n" ${line} >> ${filename}.txt; done
スクリプトの設定
- 1行目の「month」の後ろを抜き出し対象の年4桁、月2桁に書き換えます
- ()カッコの部分を自分の環境に合わせて書き換えます
- 結果ファイルを出力するフォルダ
- タスクシュートのログファイルのフォルダ
以上、設定したらコピーして、Macのターミナルにまとめて貼り付ければOKです。
スクリプトの補足説明
- awkの後ろの「-A2」は出勤の文字がある行と、その後ろの2行も持ってくるという意味。邪魔なら「-A2」を消してください。
- awkの後ろの「-B2」は帰宅の文字がある行と、その前2行も持ってくるという意味。邪魔なら消してください。
- echoだとタブの出力が出来なかったのでprintf使った。
- 出力結果は日付時刻の後ろにタブをつけてタスクシュートの項目名を出力。
以上
シェルスクリプトで日付毎のファイル作るサンプルとしても多少は役に立つかな?
広告
お好きに改造して使ってください。