Se você estiver sugerindo que nl
deve armazenar em buffer toda a entrada simplesmente para medir o número máximo necessário, isso não está no espírito dos filtros de fluxo. Com raras exceções ( sort
, por exemplo), os principais utilitários tentam processar fluxos imediatamente - especialmente porque podem ser usados em um pipeline virtualmente infinito (por exemplo, um fluxo de log que é incrementalmente filtrado por nl
e redirecionado para um arquivo pode acumular muitos dados).
A maneira padrão de lidar com preenchimento é simplesmente especificar a largura máxima esperada como um parâmetro. Nesse caso, você pode desativar o preenchimento (prefiro isso de qualquer maneira, faz sentido ter apenas uma coluna separada por espaço na frente) ou definir uma largura diferente. Comparar:
seq 0 10000000 | nl -w12 # default right-justify, 12 character width
seq 0 10000000 | nl -w1 # default right-justify, 1 character width (no padding)
seq 0 10000000 | nl -w1 -s' ' # right-justify, space delimited instead of tab
seq 0 10000000 | nl -nln # left-justify
Se você realmente quiser fazer isso automaticamente, basta usar wc -l
para primeiro medir o comprimento e depois definir o -w
apropriadamente.