shell循环运算

以递加为例

for 循环求和(抓取关键字1,输出文本第一列数字)

bc计算器可以做到常规的加减乘除运算,需要注意的是乘除法可以使用scale取输出的保留位数,具体规则可以百度,个人感觉不如awk好使

#整数运算
sum
=0; for num in $(awk '/1/{print $1}' 1.txt);do sum=$(($sum+$num)); done; echo $sum

###小数运算,需确认是否安装bc

sum=0;
for num in $(awk '/1/{print $1}' 1.txt);do
sum=$(echo "$sum + $num"|bc);
done
echo $sum

 

while循环readline求和


awk '/1/{print $1}' 1.txt >11.txt

sum
=0; while read num; do sum=$(echo "$sum + $num"|bc); echo $sum; done<11.txt echo $sum

 

以下方式不知道为什么,循环体外输出的'$sum'的值为0,只能从循环体内输出$sum(希望路过的大佬指点一下)

sum=0;
awk
'/1/{print $1}' 1.txt | while read num do
  sum=$(echo "$sum + $num"|bc);
  echo $sum
done
echo $sum

 如果单取求和的最终值可以取巧一下

export sum
sum=0;
awk '/1/{print $1}' 1.txt | while read num;do
        sum=$(echo "$sum + $num"|bc);
        echo $sum
done > 2.txt
tail -1 2.txt&&rm -f 2.txt

 

awk直接求和

 awk '{sum+=$1}END{print sum}' 1.txt

 

posted @ 2024-01-16 17:48  咿呀哒喏  阅读(10)  评论(0编辑  收藏  举报