整数行5個ごとに追加

整数行5個ごとに追加

私はパーサーを書いており、何か素晴らしいことをしなければなりません。私はPythonを使用しないようにしていますが、この時点で使用する必要があるかもしれません。

次のSTDOUTが提供されます。

1
0
2
3
0
0
1
0
0
2
0
3
0
4
0
5
0
2
.
.
.

100,000行の場合。私がしなければならないことは、次のように5つずつ追加するだけです。

1 - start
0 |
2 | - 6 
3 |
0 - end
0 - start
1 |
0 | - 3
0 |
2 - end
0 - start
3 |
0 | - 7
4 |
0 - end
5 
0 
2 
. 
.
.

、、、、、はすべて視覚的表現のためで-あるため、列リストに配置する必要があります|startend

 6
 3
 7
 .
 .
 .

現在の増分を使用しhead -n $itail -n 5リストから5行を削除してから、すべての値paste -sd+ - | bcを一緒に追加する方法があります。しかし、100,000行があるので、これは遅すぎます。

どうすればもっとうまくいくことができますか?

ベストアンサー1

cat numbers.txt | awk '{sum += $1; if (NR % 5 == 0) {print sum; sum=0}} END {if (NR % 5 != 0) print sum}'

sumawkでは0から始まります。 5行目ごとに現在の数値の合計を印刷し、合計を0にリセットし、次の5行に進みます。最後は、ENDファイルの行数が5の倍数でない場合を処理します。たとえば、ファイルに18行がある場合は、最後の3行の合計を印刷します。また、行数が5の倍数の場合、不要なゼロを印刷しない極端なケースも処理します。

おすすめ記事