算術比較

ようやくshスクリプトが便利だということがわかってきた.
今回はデータのある値が定数以上出現するファイル以外を削除する,ということをやろうとした.普通にPerlスクリプトを書こうとしたが,shで書けるということに気がついた.

#!/bin/sh

# 引数が0の場合,エラー
if [ ! $1 ]; then
    echo "Input correct threshold."
    exit
fi

THRESHOLD=$1
echo "Input Threshold is "$THRESHOLD

# ARFFファイルを取得
for f in `find ./ -type f -name "*.arff"`
do
  # "pos"}が出現する行数をカウントする
  VALUE=`grep '"pos"}' $f | wc -l`

  # 閾値以下の場合削除
  if [ $VALUE -lt $THRESHOLD ]; then
      CMD="rm "$f
      echo $CMD
      # $CMD
  fi
done

こういうときむかし読んだUnixという考え方という本を思い出す.
ほとんど内容忘れたけれど,重要なのは「小さな働きをするコマンドを複数つなげて大きな仕事をする」という事だったような気がする.
最近はとにかく「もったいないお化け」を出さないように心がけている.標準出力でたらパイプパイプ!

しかしBourne shellは覚えられないなぁ...

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学