Transgressão demenos espanto:
bash-5.0$ (for i in {1..1000010}; do echo $i; done) | nl | tail -24
999987 999987
999988 999988
999989 999989
999990 999990
999991 999991
999992 999992
999993 999993
999994 999994
999995 999995
999996 999996
999997 999997
999998 999998
999999 999999
000000 1000000
000001 1000001
000002 1000002
000003 1000003
000004 1000004
000005 1000005
000006 1000006
000007 1000007
000008 1000008
000009 1000009
000010 1000010
bash-5.0$ uname -a
Darwin llc.local 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 20
20; root:xnu-6153.101.6~15/RELEASE_X86_64 x86_64
bash-5.0$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.4
[...]
bash-5.0$ _
Compare com a expectativa:
admin@ip-w-x-y-z:~$ (for i in {1..1000010}; do echo $i; done) | nl | tail -24
999987 999987
999988 999988
999989 999989
999990 999990
999991 999991
999992 999992
999993 999993
999994 999994
999995 999995
999996 999996
999997 999997
999998 999998
999999 999999
1000000 1000000
1000001 1000001
1000002 1000002
1000003 1000003
1000004 1000004
1000005 1000005
1000006 1000006
1000007 1000007
1000008 1000008
1000009 1000009
1000010 1000010
admin@ip-w-x-y-z:~$ uname -a
Linux ip-w-x-y-z 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u4 (2019-07-19)
x86_64 GNU/Linux
admin@ip-w-x-y-z:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.9 (stretch)
Release: 9.9
Codename: stretch
admin@ip-w-x-y-z:~$ _
Estou curioso para saber o que você pensa sobre isso e como superar. Obrigado.
Responder1
O padrãolargurados números adicionados nl
é 6. Isso está documentado no nl
manual, bem comoespecificado pelo padrão POSIX.
O macOS nl
trunca os números se eles forem maiores que a largura (e o manual documenta isso), enquanto o GNU nl
não (mas não documenta isso). Nenhum dos comportamentos parece ser proibido pelo texto padrão.
Para numerar linhas que requerem mais de 6 dígitos, especifique uma largura maior usando a -w
opção nl
:
$ (for i in {1..1000010}; do echo $i; done) | nl -w 7 | tail -24
999987 999987
999988 999988
999989 999989
999990 999990
999991 999991
999992 999992
999993 999993
999994 999994
999995 999995
999996 999996
999997 999997
999998 999998
999999 999999
1000000 1000000
1000001 1000001
1000002 1000002
1000003 1000003
1000004 1000004
1000005 1000005
1000006 1000006
1000007 1000007
1000008 1000008
1000009 1000009
1000010 1000010