gpt4 book ai didi

bash - 在 bash 中处理一行带分隔符的数字

转载 作者:行者123 更新时间:2023-11-29 09:24:13 24 4
gpt4 key购买 nike

我有一行数字,我希望能够一个一个地处理它们。对于前。

3829 4837 3729 2874 3827 

我希望能够得到总和、最大数等等。但我不确定如何获取每个数字来处理它。我会 REAAAAALLLLLLLLY 喜欢坚持使用纯 bash,我不介意 bash 中的复杂解决方案。但如果 awk 是绝对必要的,我会使用它。我不想使用 sed。

我想我可以这样做:

max= cut -d" " -f1
in line L cut -d" " -f$(loop index)
#check for max

我很困惑。

编辑:感谢您的回答,我在 bash 中看到了一些我从未见过的新东西,我准备进一步探索它们。我收到了我寻找的信息,甚至更多! :)

最佳答案

如果你想一个一个地处理进程号,利用shell分词:

numbers="3829 4837 3729 2874 3827"
for n in $numbers; do
# do something with "$n"
done

总和:

numbers="3829 4837 3729 2874 3827"
echo $((${numbers// /+}))

numbers="3829 4837 3729 2874 3827"
for n in $numbers; do
((sum+=n))
done

echo $sum

最大:

numbers="3829 4837 3729 2874 3827"
for n in $numbers; do
((max<n)) && max=$n
done

echo $max

或者,如果您想要一个带有一些 shell 技巧的全局 SUM:

$ tr ' ' '+' <<< '3829 4837 3729 2874 3827' | bc                                 
19096

$ awk '{$1=$1; print}' OFS=+ <<< '3829 4837 3729 2874 3827' | bc
19096

$ echo  '3829 4837 3729 2874 3827' |
awk '{for (i=1; i<=NF; i++) c+=$i} {print c}'
19096

关于bash - 在 bash 中处理一行带分隔符的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555981/

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