Возможно, это должно отправиться на codegolf.SE. Вот одна строка без perl
, awk
или sed
:
paste <(for i in $(seq 1 0.33333333334 $(A=$(wc -l input.dat | cut -d ' ' -f 1); echo $A/3+1 | bc)); do echo $i/1 | bc; done) <(tr -s ' ' < input.dat | cut -d ' ' -f 3) | datamash -g 1 sum 2
Левая сторона
for i in $(seq 1 0.33333333334 $(A=$(wc -l input.dat | cut -d ' ' -f 1); echo $A/3+1 | bc)); do echo $i/1 | bc; done
Выдает список (учитывает фактическое количество строк во входном файле):
1
1
1
2
2
2
3
3
3
А правая сторона
tr -s ' ' < input.dat | cut -d ' ' -f 3
Измельчает первый столбец входного файла, оставляя:
2
7
4
7
3
7
1
2
4
paste
объединяет их обратно и datamash
делает group by.