![用于划分文件内数字的 Shell 脚本](https://linux22.com/image/50259/%E7%94%A8%E4%BA%8E%E5%88%92%E5%88%86%E6%96%87%E4%BB%B6%E5%86%85%E6%95%B0%E5%AD%97%E7%9A%84%20Shell%20%E8%84%9A%E6%9C%AC.png)
我有 1 列和 12 行。每行都有数值。我想使用 shell (bash) 脚本将每行值除以某个常数(例如 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
为了解决 shell 浮点运算的复杂性,为什么不使用 Perl 呢?这是一个简单的做法:
C=3 perl -ne 'printf "%.2f\n",$_/$ENV{C}' your_file
庞大的答案这个问题您可能也会感兴趣。