ファイルの数を分割するシェルスクリプト

ファイルの数を分割するシェルスクリプト

1つの列と12の行があります。各行には数値があります。シェルスクリプトを使用して、各行の値をいくつかの定数(例:C)で分割したいと思います。どうすればいいですか?よろしくお願いします。

答え1

martin@dogmeat ~ % cat test 
100
50
25
martin@dogmeat ~ % cat test | while read i; do echo "$i/2" | bc; done
50
25
12
martin@dogmeat ~ % cat test | while read i; do echo "scale = 5; $i/2.0" | bc; done
50.00000
25.00000
12.50000

bc丸め機能がないため、これらの数値を正しく丸めるには、関数を直接実装する必要があります。

答え2

整数除算が大丈夫なら:

c=3
while read num; do
    echo $(( num / c ))
done < file

それ以外の場合は、次のものを使用できます。

awk -v c=3 '{ print $1/c }' file

答え3

シェル浮動小数点演算の複雑さを解決するためにPerlを使用するのはどうですか?これを行う簡単な方法は次のとおりです。

C=3 perl -ne 'printf "%.2f\n",$_/$ENV{C}' your_file

膨大な答えこの問題あなたも興味があるかもしれません。

関連情報