Transgresión demínimo asombro:
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$ _
Comparar con las expectativas:
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:~$ _
Tengo curiosidad por saber qué piensa sobre esto y cómo superarlo. Gracias.
Respuesta1
El valor por defectoanchode los números sumados por nl
es 6. Esto está documentado en el nl
manual, así como enespecificado por el estándar POSIX.
macOS nl
trunca los números si son más largos que el ancho (y el manual documenta esto), mientras que GNU nl
no lo hace (pero no lo documenta). Ninguno de los comportamientos parece estar prohibido por el texto estándar.
Para numerar líneas que requieren más de 6 dígitos, especifique un ancho mayor usando la -w
opción de 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