为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2019-07-31 11:21:17
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


查看完整回答
反对 回复 2019-07-31
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

粘贴通常合并多个文件的行,但它也可用于将文件的各行转换为单行。分隔符标志允许您将x + x类型方程传递给bc。

paste -s -d+ infile | bc

或者,当从stdin管道时,

<commands> | paste -s -d+ - | bc


查看完整回答
反对 回复 2019-07-31
?
温温酱

TA贡献1752条经验 获得超4个赞

Python中的单行版本:

$ python -c "import sys; print(sum(int(l) for l in sys.stdin))"


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 1226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信