迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

使用 Bash 对文本文件中的数字列表求和

作者:迹忆客 最近更新:2023/06/10 浏览次数:

本篇文章将介绍使用 Bash 脚本对文件中的数字列表求和的多种方法。 第一种方法涉及使用粘贴命令,我们将讨论两种情况:使用现有文件和使用标准输入读取文件。

最后,我们将讨论用于获取总和的 cutawk 命令。


使用 Bash 对文本文件中的数字列表求和

下面描述的方法将假设我们有一个标题为 numbers.txt 的输入文件。

numbers.txt 文件:

1
2
3
4
5
6
7
8
9
10

使用现有文件

如果我们将所有数字存储在一个简单的文本文件中,每个数字单独一行,那么我们可以在 Bash 中调用以下命令并获取总和。

命令:

paste -sd+ numbers.txt | bc

输出:

55

使用标准输入(标准输入)

以下命令可以从文件中读取并获取数字的总和。

命令:

cat numbers.txt | paste -sd+ | bc

输出:

55

在这种情况下,我们使用命令 cat numbers.txt 从文件中读取。 此命令可以替换为任何其他返回数字列表的命令。

应该注意的是,虽然 paste 有一个 POSIX 定义的规范,但并不是每个实现都是相同的。 需要在 Mac OS 中使用以下命令才能获得相同的输出。

命令:

<cmd> | paste -sd+ - | bc

使用 cut 命令

假设我们有一个包含多列的文本文件,我们想要获得特定列的总和。 我们可以使用 cut 命令来实现这一点。

假设我们有一个 numbers.txt 文件,定义如下:

1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1

我们可以使用下面的命令分别总结每一列。

命令:

cat numbers.txt | cut -d ' ' -f 2 | paste -sd+ | bc -l

-f 之后的参数表示要求和的列号。 还应注意,在这种情况下,列号的计数从 1 而不是 0 开始。

当我们为 -f 标志添加 passed 2 时,我们将获得第二列的总和。

输出:

10

使用 awk 命令

以其作者命名的 awk 命令比我们以前的方法更适合这项任务。 测量时,awk 的性能比我们以前的方法好得多。

命令:

awk '{s+=$1} END {print s}' numbers.txt

输出:

55

您可以将 numbers.txt 替换为包含您的号码的文件的名称。 这也使我们能够绕过通过 cat 读取文件,这对卓越的性能负有部分责任。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便