在bash中循环浏览数字文本文件并逐行添加数字

时间:2019-04-01 23:41:50

标签: bash

我在文件夹中有一组文本文件,如下所示:

a.txt
1
2
3
4
5

b.txt
1000
1001
1002
1003
1004

..以此类推(假设行数固定,但文本文件数未知)。我正在查看的结果文件是所有行的总和:

result.txt
1001
1003
1005
1007
1009

我该如何在bash中实现这一目标?无需使用Python等。

1 个答案:

答案 0 :(得分:4)

使用awk

尝试:

$ awk '{a[FNR]+=$0} END{for(i=1;i<=FNR;i++)print a[i]}' *.txt
1001
1003
1005
1007
1009

工作原理:

  • a[FNR]+=$0

    对于读取的每一行,我们将该行的值$0加到部分和a[FNR]中,其中a是一个数组,FNR是该行当前文件中的数字。

  • END{for(i=1;i<=FNR;i++)print a[i]}

    读完所有文件后,将打印出每个行号的总和。

使用粘贴和密件抄送

$ paste -d+ *.txt | bc
1001
1003
1005
1007
1009