
我有這個輸出 filename.txt
AC1481523 001 001 001 001
AC1481523 005 005 005 005
AC1481676 003 003 005 004
AC1481676 003 002 001 004
我想單獨添加所有列,其中第一列具有相同的值。我試過這個
awk '{for (j = 1; j <= 200; j++) a[$1]+=$j} END {for(i in a) print i,a[i] }' filename.txt
我將所有數字添加到一列中,然後得到
AC1481523 24
AC1481676 25
但我想要
AC1481523 6 6 6 6
AC1481676 6 5 6 8
答案1
這是一種方法:
$ awk '{ for (j = 2; j <= NF; j++) a[$1][j]+=$j }
END {
for(i in a){
printf "%s", i;
for(field in a[i]){
printf " %s",a[i][field]
}
print ""
}
}' file
AC1481676 6 5 6 8
AC1481523 6 6 6 6
請注意,我已經j
從 2 開始計數,因為我們不需要第一個字段,直到 NF(字段數)而不是 200。腳本使用多維數組 ( a[$1][j]
),以便對於每個第一個字段,都有一個包含所有關聯值的數組。最後,我們迭代數組,根據需要進行列印。