gpt4 book ai didi

awk - NF-i 字段的累积和

转载 作者:行者123 更新时间:2023-12-01 23:11:47 24 4
gpt4 key购买 nike

我有

NC_042565.1  1   1  0  0  1  0  0  1  0  0  0  0  8  3  0  0  0  0  0  0  0  0  0
NC_042565.1 2 2 0 0 3 2 0 1 0 0 0 0 7 1 2 1 0 0 0 0 0 0 0
NC_042565.1 3 2 0 0 3 3 0 1 0 0 0 0 7 1 1 2 0 0 0 0 0 0 0
NC_042565.1 4 2 0 0 3 3 0 1 0 0 0 0 7 1 1 2 0 0 0 0 0 0 0
NC_042565.1 5 3 0 0 3 3 0 1 0 0 0 0 7 1 0 3 0 0 0 0 0 0 0

...

我想将第 14 列加到最后,然后将 15 加到最后,然后将 16 加到最后,依此类推。这样我就有了

NC_042565.1  1   1  0  0  1  0  0  1  0  0  0  0  11  3  0  0  0  0  0  0  0  0  0
NC_042565.1 2 2 0 0 3 2 0 1 0 0 0 0 11 4 3 1 0 0 0 0 0 0 0
NC_042565.1 3 2 0 0 3 3 0 1 0 0 0 0 11 4 3 2 0 0 0 0 0 0 0
NC_042565.1 4 2 0 0 3 3 0 1 0 0 0 0 11 4 3 2 0 0 0 0 0 0 0
NC_042565.1 5 3 0 0 3 3 0 1 0 0 0 0 11 4 3 3 0 0 0 0 0 0 0

我试过了

awk '{for(i=2;i<=NF;i++){$i=$i+$(i-1)}} 1'  file 

Calculate cumulative sum of fields within each line

awk '{for(i=15;i<=NF;i++){$i+=(s+=$NF>$i)}}1' file

最佳答案

这很简单:

$ awk '{for(i=NF-1;i>=14;i--)$i+=$(i+1);print}' file
NC_042565.1 1 1 0 0 1 0 0 1 0 0 0 0 11 3 0 0 0 0 0 0 0 0 0
NC_042565.1 2 2 0 0 3 2 0 1 0 0 0 0 11 4 3 1 0 0 0 0 0 0 0
NC_042565.1 3 2 0 0 3 3 0 1 0 0 0 0 11 4 3 2 0 0 0 0 0 0 0
NC_042565.1 4 2 0 0 3 3 0 1 0 0 0 0 11 4 3 2 0 0 0 0 0 0 0
NC_042565.1 5 3 0 0 3 3 0 1 0 0 0 0 11 4 3 3 0 0 0 0 0 0 0

说明:我们只是以与 $i 相反的顺序处理字段 ( $(NF-1) )下降到 $14 .我们修改$i通过添加下一个字段 ( $i+=$(i+1) ) 来实现。当我们以相反的顺序进行时 $(i+1)已经是 $(i+1) 的总和至 $NF原始字段。所以,当添加 $(i+1)$i , $i本身成为 $i 的总和至 $NF原始字段。

关于awk - NF-i 字段的累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69763132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com