Isso parece funcionar com um mínimo de loop:
awk '{ printf("%0.0f ",(NR/100.001)+.5) ;print $1 }' p2.dat > p3.dat
Demo, imprima os primeiros 10 números e em grupos de 3 prefixo um incremento:
seq 10 | awk '{ printf("%0.0f ",(NR/3.001)+.5) ;print $1 }'
Saída:
1 1
1 2
1 3
2 4
2 5
2 6
3 7
3 8
3 9
4 10
Nota: awk
arredondamento mostra alguns problemas de conversão binários. O código acima usa expressões como (NR/3.001)+.5)
, quando seria mais claro escrever (NR/3)+.5)
ou mesmo (NR*(1/3))+.5)
. Infelizmente, esses não funcionam:
# WRONG: (rounding errors), shows four '2's, etc.
seq 10 | awk '{ printf("%0.0f ",(NR/3)+.5) ;print $1 }'
1 1
1 2
2 3
2 4
2 5
2 6
3 7
3 8
4 9
4 10