如何读取字符串数据并计算文本文件中数字的总和

如何读取字符串数据并计算文本文件中数字的总和

我有一个文本文件,其中列出了行程距离的结果

行程距离.txt

12.1 meters
14.1 meters

每当我尝试计算距离总和时,结果都会显示此消息

12.1
12.1
26.2
26.2

但是,如果我从行驶距离文本文件中删除“米”这个词,它就能完美地计算,比如这个

12.1
26.2

有什么方法可以读取字符串数据并允许完美计算距离,例如这样

12.1 meters
26.2 meters

我甚至尝试过 while 循环,但它根本不起作用。我的代码如下所示

#!/bin/bash

SUM=0;


for n in $(cat DistanceLog_TD01.txt)
do 
    SUM=$(echo "$SUM + $n" | bc); #Need help here
    echo $SUM;
        
done

echo $(date +"%m-%d-%Y %T") "Total distance:" $SUM "meters" >> totaldistance.txt

谢谢!

答案1

使用awk

<infile awk '{ print sum+=$1, $2 }'

将日期和时间添加到输出:

<infile awk '{ print sum+=$1, $2 }
END{ print date_time }' date_time="$(date +'%F %T')"

请注意“约会时间”以上是命令之前的日期和时间awk执行。如果你需要约会时间什么时候awk处理完毕后,执行:

<infile awk '{ print sum+=$1, $2 }' && echo "$(date +'%F %T')"

或者如果你有GNU awk为了strftime()功能:

<infile awk '{ print sum+=$1, $2 } END{ print strftime("%F %T") }'

awkstrftime() 在此处格式化

在一行中添加日期和时间并输出:

<infile awk '{ sum+=$1 } END{ print sum, $2, date_time }' date_time="$(date +'%F %T')" 

再次,您可以使用 GNU awk 的 strftime() 函数来输出日期和时间。

相关内容