gpt4 book ai didi

linux - 使用 bash 在没有 awk 的情况下平均线

转载 作者:太空狗 更新时间:2023-10-29 12:43:09 26 4
gpt4 key购买 nike

我刚开始使用 bash,我在 bash 算术方面遇到了一些困难。假设我有一些具有三个温度的城市,我想在不使用 awk 命令的情况下平均温度。我怎样才能做到这一点?我用 awk 做到了,但我正在练习不同的技术。

# cityTemp.txt with four cities, three day's temperatures
Toronto 20 25 30
Miami 80 80 110
London 40 20 60
New York 5 10 15

假设我正在尝试编写一个脚本来输出:

25 Toronto
90 Miami
40 London
10 New York

我已经使用一些管道和 awk 命令完成了此操作,但我在不使用 awk 的情况下执行此操作时遇到了问题。

再一次,我是新手。我尝试了一个 for 循环,但我真的不知道我在做什么。

---编辑1:

Benjamin W. 我又在编辑了,但现在我正在循环播放:

#!/bin/bash

for i in $(cat $1)
do
echo "i is: ${i}"
done < $1

这可能很明显,只是一次打印 cityTemp.txt 中的每个字段。

---编辑2:

这是我的结束尝试

while read -a rows
do
total=0
sum=0
for i in "${rows[@]}"
do
sum=`expr $sum + $i`
total=`expr $total + 1`
done
average=`expr $sum / $total`
Output = ${average}
done < $1
echo ${averages}

最佳答案

这应该适用于任何 Posix shell,所以我们也可以 shebang它与 #!/bin/sh.

#!/bin/sh

avg () {
city=
while [ $# -gt 3 ]; do
city="$city $1"
shift
done
echo $((($1 + $2 + $3) / 3)) $city
}

while read line; do
avg $line
done < cityTemp.txt

如果城市在每条线上都排在最后,这会容易得多,哈哈。

关于linux - 使用 bash 在没有 awk 的情况下平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35165850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com