我有一个文本文件,其中列出了行程距离的结果
行程距离.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") }'
在一行中添加日期和时间并输出:
<infile awk '{ sum+=$1 } END{ print sum, $2, date_time }' date_time="$(date +'%F %T')"
再次,您可以使用 GNU awk 的 strftime() 函数来输出日期和时间。