Shell命令求和整数,每行一个?

Shell命令求和整数,每行一个?

我正在寻找一个命令,它将接受多行文本作为输入,每行包含一个整数,并输出这些整数的总和。

作为一个背景,我有一个日志文件,其中包括时间测量,所以通过grepping相关的行,以及一些sed重新格式化,我可以列出该文件中的所有时间。然而,我想计算出总数,而且我的思绪已经变得空白,因为任何命令我都可以将这个中间输出传递到最终总和。我过去总是使用expr过,但除非它在RPN模式下运行,否则我认为它不会应付这个问题(即便如此,它也会很棘手)。

我错过了什么?鉴于可能有多种方法可以实现这一点,我将很乐意阅读(并提升)任何有效的方法,即使其他人已经发布了一个不同的解决方案来完成这项工作。

相关问题:在Unix上计算一列输出总和的最短命令?来自@Andrew


更新:哇,正如所料,这里有一些不错的答案。看起来我一定要awk作为命令行工具进行更深入的检查!


白衣非少年
浏览 1227回答 3
3回答

繁花如伊

有点awk应该这样做吗?awk '{s+=$1} END {print s}' mydatafile注意:如果您要添加超过2 ^ 31(2147483647)的任何内容,某些版本的awk会有一些奇怪的行为。有关更多背景,请参阅评论 一个建议是使用printf而不是print:awk '{s+=$1} END {printf "%.0f", s}' mydatafile

德玛西亚99

粘贴通常合并多个文件的行,但它也可用于将文件的各行转换为单行。分隔符标志允许您将x + x类型方程传递给bc。paste&nbsp;-s&nbsp;-d+&nbsp;infile&nbsp;|&nbsp;bc或者,当从stdin管道时,<commands>&nbsp;|&nbsp;paste&nbsp;-s&nbsp;-d+&nbsp;-&nbsp;|&nbsp;bc

温温酱

Python中的单行版本:$&nbsp;python&nbsp;-c&nbsp;"import&nbsp;sys;&nbsp;print(sum(int(l)&nbsp;for&nbsp;l&nbsp;in&nbsp;sys.stdin))"
打开App,查看更多内容
随时随地看视频慕课网APP