linux shell 整数相加,Bash命令对一列数字求和

本问题已经有最佳答案,请猛点这里访问。

我需要一个bash命令,我可以通过管道输入该命令,它将对一列数字求和。我只想要一个快速的一行程序,可以做一些基本上类似的事情:

cat FileWithColumnOfNumbers.txt | sum

相关:stackoverflow.com/q/3934423/376454

仅供参考,awk解决方案更容易记忆,速度大约快2倍(见这里和这里)。

使用现有文件:

paste -sd+ infile | bc

使用STDIN:

| paste -sd+ | bc

编辑:对于一些粘贴实现,从stdin读取时需要更加明确:

| paste -sd+ - | bc

哦!我喜欢!+ 1

太棒了!+我也是!

我赞成简洁。

应该有一个徽章。

+从我这里得到最简洁的解决方案!

与Fyi一样,-s选项在GNU paste中;Mac OS X 10.7.4 paste不支持该选项。但是,由于paste的posix 2008规范支持-s,这是mac os x版本中的一个缺陷。

这救了我的皮肤。这样的答案应该有+2。令人惊叹的。

仅仅是另一个操作系统x的fyi,我必须在粘贴命令的末尾添加a-,以便在操作系统x 10.6.8上工作。

用bc -l你甚至可以把浮点数相加。使用cut可以从输入中选择列:cat input.txt | cut -d ' ' -f 8 | paste -sd+ | bc -l将在输入的第8列中添加所有浮点数(空格为字段分隔符)。

好吧,用awk会更容易些:awk 'END { print s } { s += $8 }' infile。

bc似乎不支持科学记数法。我有一些十进制数字,有些像2.345e-3。思想?Perl/Python?

@本,在下面的线程中,您将找到awk和perl解决方案。

对不起,你们都是贴情人。-我说得太具体了。只有当您的文件中只有数字时,这才有效。我几乎从未遇到过这种情况。谷歌"bash添加列号"就可以了。总是&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值