線を越えて最も驚かなかった:
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$ _
期待と比較:
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:~$ _
これについてどう思うか、どう克服しているのか気になります。ありがとうございます。
答え1
基本幅追加された数字nl
は6です。nl
マニュアルにも記載されています。POSIX規格で指定。
nl
macOSは、数値が幅よりも長い場合は数値を切り捨て(手動文書ではこれを文書化します)、GNUはnl
そうではありません(ただしこれは文書化されていません)。標準テキストは両方の動作を許可しないようです。
6桁以上が必要な行に番号を付けるには、-w
次のオプションを使用してより大きな幅を指定します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