我在文件夹中有一组文本文件,如下所示:
a.txt
1
2
3
4
5
b.txt
1000
1001
1002
1003
1004
..以此类推(假设行数固定,但文本文件数未知)。我正在查看的结果文件是所有行的总和:
result.txt
1001
1003
1005
1007
1009
我该如何在bash中实现这一目标?无需使用Python等。
答案 0 :(得分:4)
尝试:
$ 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