Let's write β

プログラミング中にできたことか、思ったこととか

ちょっとしたツール

入力された数値の最大と最小を除いた残りの値の平均を出す

#!/usr/local/bin/ruby
values = []
sum = 0;
while line = gets
        val = line.to_f
        sum += val
        values << val
end

sum -= values.max
sum -= values.min

sum /= (values.length - 2)

puts sum

標準入力からの入力を一定の行数毎に出力する

#!/usr/bin/python
import sys
import getopt

def main():
        try:
                opts, args = getopt.getopt(sys.argv[1:], '', ["one"])
        except getopt.GetoptError:
                sys.exit(2)
        idx = 0
        sep = 1
        for o, a in opts:
                if o == "--one":
                        idx = 1
        if(len(args) >= 1):
                sep = int(args[0])
        for line in iter(sys.stdin.readline, ""):
                if(idx % sep == 0):
                        print line,
                idx += 1

if __name__ == "__main__":
        main()

splitは指定した行数のまとまりを個別のファイルにだすものですが、こちらは1行目と3行目、5行目だけを出力とかするのに使えます。
以外とデータファイルとかで2行ペアでデータと補足情報が出力されてきていて、データの行だけ取りだしたい時などあります。UNIXでこんなコマンドがすでに存在するよ、という情報がありましたらよろしくおねがいします。