次のデータがあります。
入力.txt
1 0000100101000000
1 0000010100000000
2 1110000001000000
2 1111000000001000
3 0000000111111111
3 1111111100000000
4 8888345500000000
4 0000000000000000
同じ行番号を持つ2行ごとに値を合計したいと思います。出力:
出力.txt
1 0000110201000000
2 2221000001001000
3 1111111211111111
4 8888345500000000
どんな提案がありますか?私の実際のデータには、各行に45000個の数字を持つ8000個の行があります。
ベストアンサー1
全体的なawk
ソリューションはどうですか?
awk 'BEGIN { tag = -1; sum = 0}
{
if (tag != $1) {
if (tag > -1) {printf "%d %016d\n", tag, sum;}
tag = $1; sum = $2
} else { sum += $2 }
}
END {print tag, sum}' input.txt
入力が最初の列に基づいてソートされているかどうかはわかりません。次のことができます。次にそれを上記のスクリプトsort -k1.1n input.txt
にパイプします。awk