nlコマンドはvオプションを指定することで、行番号の初期値を変更することができます。
vオプションの使い方
論理ページごとに初期値を変更します。デフォルトは1
です。あまり特筆することはありませんが、マニュアルを参照してみましょう。
info nl (GNU coreutils)
‘-v NUMBER’
‘--starting-line-number=NUMBER’
Set the initial line number on each logical page to NUMBER (default
1).
busybox nl --help
-v N Start from N
man nl (BSD)
-v startnum Specify the initial value used to number logical page lines; see
also the description of the -p option. The default startnum
value is 1.
BSD系のマニュアルではpオプション(未解説)について補足があります。
POSIX
-v startnum
Specify the initial value used to number logical page lines. The default shall be 1.
vオプションを試す
それでは実際に試してみましょう。
$ yes | head | nl -v 5
5 y
6 y
7 y
8 y
9 y
10 y
11 y
12 y
13 y
14 y
負の値
-v
には負の値も設定することができます。
$ yes | head | nl -v -5
-5 y
-4 y
-3 y
-2 y
-1 y
0 y
1 y
2 y
3 y
4 y
改ページ
論理ページが複数ある場合は、ページごとにリセットされます。
coreutils
$ echo -e 'a\nb\n\:\:\nc\nd'
a
b
\:\:
c
d
$ echo -e 'a\nb\n\:\:\nc\nd' | nl -v 5
5 a
6 b
5 c
6 d
bsd
$ echo -e 'a\nb\n\:\:\nc\nd' | nl -v 5
5 a
6 b
5 c
6 d
駅ナンバリング表示の駅番号を出力する(相互直通)
前の記事では、宇都宮線・高崎線の駅ナンバリング表示を出力しました。今回は-v
を使って横浜線の駅ナンバリング表示を出力してみます。
横浜線は多くの列車が東神奈川駅を始発終着とし横浜駅まで直通しないことで有名ですが、一部列車は東神奈川駅から先、京浜東北線・根岸線大船駅まで直通します。そのため京浜東北線・根岸線と駅番号を合わせる都合から、横浜線のプリフィックス「JH」の駅番号は東神奈川駅13
からスタートします。
$ cat yokohamaline
東神奈川
大口
菊名
新横浜
小机
鴨居
中山
十日市場
長津田
成瀬
町田
古淵
淵野辺
矢部
相模原
橋本
相原
八王子みなみ野
片倉
八王子
$ nl -n rz -w 2 -v 13 yokohamaline | sed 's/^/JH/'
JH13 東神奈川
JH14 大口
JH15 菊名
JH16 新横浜
JH17 小机
JH18 鴨居
JH19 中山
JH20 十日市場
JH21 長津田
JH22 成瀬
JH23 町田
JH24 古淵
JH25 淵野辺
JH26 矢部
JH27 相模原
JH28 橋本
JH29 相原
JH30 八王子みなみ野
JH31 片倉
JH32 八王子