linux - 如何计算 Shell 中的累积值?

标签 linux shell unix awk

我想从下面的数据文件中计算累积值,并在插入序列号后将它们写入列中。

ifile.txt
1 2 3 2 3 1 4 5 1 
3 4 5 2 3 4 1 3 1 
1 3 2 3 2 4 1 2 4 ...............

本例中 ifile.txt 有 3 行 9 列。 期望输出:

ofile.txt
1  1   3   1
2  3   7   4
3  6   12  6
4  8   14  9
5  11  17  11
6  12  21  15
7  16  22  16
8  21  25  18
9  22  26  22
.  
.  
.  

此处第一列用于序列号。 所以我所做的是:我首先使用

转换为列
awk '{ 
for (i=1; i<=NF; i++)  {
    a[NR,i] = $i
     }
}
NF>p { p = NF }
END {    
for(j=1; j<=p; j++) {
    str=a[1,j]
    for(i=2; i<=NR; i++){
        str=str" "a[i,j];
    }
    print str
    }
 }' ifile.txt > ifile1.txt

然后我用awk

awk '{print m1=$1+m1, m2=$2+m2, m3=$3+m3}' ifile1.txt > ofile.txt

我无法继续下一步,即插入一列序列号。我也不能为任意列和行制作它。

最佳答案

对于序列号栏

awk '{print i=i+1,m1=$1+m1, m2=$2+m2, m3=$3+m3}' ifile1.txt > ofile.txt

并完整解决你的逻辑

awk '{for(i=1;i<=NF;i++){if(i>1)$i=$i+$(i-1);f[i]=f[i]" "$i}if(NF>n)n=NF}END{for(i=1;i<=n;i++)print i,f[i]}'

关于linux - 如何计算 Shell 中的累积值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31803612/

相关文章:

mysql - AWS Linux 使用tomcat7 配置mysql

linux - 在 linux 中存储一个变量

linux - 如何判断shell进程的父子关系?

linux - linux 中的自动调光键盘背光

linux - 从 linux 中的特定 ip 地址连接

python - Python IDLE Shell 的令人困惑的问题

bash - 如何在脚本本身内重定向整个 shell 脚本的输出?

c - 如何通过管道传输用户输入的字符串?

linux - 如何避免与发送到派生进程的数据匹配

linux - 如何从连续 yyyy-mm-dd 格式日期的报告中提取详细信息,直到在 unix 中找到下一个 yyyy-mm-dd 条目