Djangoのカスタムタグを使用頻度順で出力するシェルスクリプト

新しく入ったデザイナーさんが
djangoのカスタムタグの仕様頻度ランキングが知りたいとのことなので
休み時間にシェルの勉強のつもりで

#!/bin/sh 
# 1つ目の引数にテンプレートのディレクトリとかのパス
# 2つ目の引数に結果を出力するファイルパスを入れてください。
# set -x

if [ $# -ne 2 ]; then
    echo 'require 2args:: tagrank ~/tmpl/dir ~/outputfile.txt'
    exit 1
fi

# 変数定義
TMPL_ROOT_DIR=${1}
OUTPUT_FILE=${2}
_TMPFILE="./_tmp"

# 結果ファイルとかを空に
touch ${_TMPFILE}
cp /dev/null ${_TMPFILE}
touch ${OUTPUT_FILE}
cp /dev/null ${OUTPUT_FILE}

# .htmlな名前のファイルを集めてgrep
for _path in $(find ${TMPL_ROOT_DIR} | perl -nwle '/\.html$/ and print;')
do 
    echo "grepping..." ${_path}
    perl -nwle '/\{%\s*([\w\d]+)/ and print $1;' ${_path} >> ${_TMPFILE}
done 

# ソートして行数数えて、数えた行数でまたソートしてでもその前に整形して、、、
echo "sort & counting..."
sort ${_TMPFILE} | \
uniq -c | \
perl -nwle 's/^/ / and print;' | \
perl -nwl -aF"\s+" -e 'print $F[1].",".$F[2];' | \
sort -t"," -rn \
> ${OUTPUT_FILE}
rm ${_TMPFILE}

# 結果が空だとエラー終了
if [ -s ${OUTPUT_FILE} ]
then
    echo "OK! finished!"
    exit 0
else
    echo "oh! something wrong!"
    exit 1
fi

この本のおかげでawksedgrepも全部perlでやってますね。

ミニマルPerl ―Unix/LinuxユーザのためのPerl習得法

ミニマルPerl ―Unix/LinuxユーザのためのPerl習得法