在Linux中从文件末尾开始的列中添加数字

时间:2014-10-12 23:16:51

标签: linux bash awk

我有一个包含一列的文件,我想在文件底部的此列中添加数字,并在每行中打印总和。例如,如果我有以下数字:

1
2
3 
4
5
6

我希望结果如下:

21(6+5+4+3+2+1)
20(6+5+4+3+2)
18(6+5+4+3)
15(6+5+4)
11(6+5)
6 (6)

如果我要从上到下添加数字,我可以想到以下内容我想知道是否有办法使用linux,cat,awk等来反转总和的顺序。任何帮助或建议都表示赞赏。

`cat file.txt | gawk ' { sum+=$1; print sum; }' > Final.file`

2 个答案:

答案 0 :(得分:3)

$ tac file | awk ' { sum+=$1; print sum }' | tac
21
20
18
15
11
6

答案 1 :(得分:2)

如果你真的想看看等式:

seq 6 | 
awk '
    {
        sum[NR] = $1
        eq[NR] = $1
        for (i=1; i<NR; i++) {
            sum[i] += $1
            eq[i] = $1 "+" eq[i]
        }
    } 
    END {for (i=1; i<=NR; i++) print sum[i] "(" eq[i] ")"}
'
21(6+5+4+3+2+1)
20(6+5+4+3+2)
18(6+5+4+3)
15(6+5+4)
11(6+5)
6(6)