Shell命令求和整数,每行一个?我正在寻找一个命令,它将接受多行文本作为输入,每行包含一个整数,并输出这些整数的总和。作为一个背景,我有一个日志文件,其中包括时间测量,所以通过grepping相关的行,以及一些sed重新格式化,我可以列出该文件中的所有时间。然而,我想计算出总数,而且我的思绪已经变得空白,因为任何命令我都可以将这个中间输出传递到最终总和。我过去总是使用expr过,但除非它在RPN模式下运行,否则我认为它不会应付这个问题(即便如此,它也会很棘手)。我错过了什么?鉴于可能有多种方法可以实现这一点,我将很乐意阅读(并提升)任何有效的方法,即使其他人已经发布了一个不同的解决方案来完成这项工作。相关问题:在Unix上计算一列输出总和的最短命令?(来自@Andrew)更新:哇,正如所料,这里有一些不错的答案。看起来我一定要awk作为命令行工具进行更深入的检查!
3 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
有点awk应该这样做吗?
awk '{s+=$1} END {print s}' mydatafile
注意:如果您要添加超过2 ^ 31(2147483647)的任何内容,某些版本的awk会有一些奇怪的行为。有关更多背景,请参阅评论 一个建议是使用printf
而不是print
:
awk '{s+=$1} END {printf "%.0f", s}' mydatafile
德玛西亚99
TA贡献1770条经验 获得超3个赞
粘贴通常合并多个文件的行,但它也可用于将文件的各行转换为单行。分隔符标志允许您将x + x类型方程传递给bc。
paste -s -d+ infile | bc
或者,当从stdin管道时,
<commands> | paste -s -d+ - | bc
- 3 回答
- 0 关注
- 1226 浏览
添加回答
举报
0/150
提交
取消