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
膨大な答えこの問題あなたも興味があるかもしれません。