ファイルの一意の行数を取得するには?

ファイルの一意の行数を取得するには?

列 1 に識別子のリストがあり、列 2 に対応する数があります。ファイルは次のようになります。

KDO65387         65
KDO65387         27
XP_006465447     971
XP_006482015     1207
XP_003630414     194
XP_002513282     500
XP_003630414     23

私が望むのは、1列の値が連続した行で一致する場合は、2列の値を合計することです。出力は次のとおりです。

KDO65387    92
XP_006465447    971
XP_006482015    1207
XP_003630414    217
XP_002513282    500

ベストアンサー1

順序が重要な場合:

awk '!($1 in sum) {f[n++] = $1}
     {sum[$1] += $2}
     END {for (i = 0; i < n; i++) print f[i], sum[f[i]]}' < file

そうでない場合は、次のように単純化できます。

awk '{sum[$1] += $2}
     END {for (f in sum) print f, sum[f]}' < file

おすすめ記事