nl
何するコマンド?
行番号を付与するときに使うコマンド
書き方
nl [オプション] [対象のファイル]
オプション
| オプション | 説明 |
|---|---|
| -b【ルール】 | 指定したルールに従って本文の行番号を付与する 「a」→すべての行に行番号を付ける 「t」→空白行以外に行番号を付ける 「n」→行番号を付けない 「p【パターン】」→指定した正規表現の【パターン】に一致する行のみ行番号を付ける use STYLE for numbering body lines a:number all lines t:number only nonempty lines n:number no lines pBRE:number only lines that contain a match for the basic regular expression, BRE |
| --body-numbering=【ルール】 | 指定したルールに従って本文の行番号を付与する 「a」→すべての行に行番号を付ける 「t」→空白行以外に行番号を付ける 「n」→行番号を付けない 「p【パターン】」→指定した正規表現の【パターン】に一致する行のみ行番号を付ける use STYLE for numbering body lines a:number all lines t:number only nonempty lines n:number no lines pBRE:number only lines that contain a match for the basic regular expression, BRE |
| -d【CC】 | 論理ページの区切り文字を指定する use CC for separating logical pages |
| --section-delimiter=【CC】 | 論理ページの区切り文字を指定する use CC for separating logical pages |
| -f【ルール】 | 指定したルールに従ってフッタ部の行番号を付与する 「a」→すべての行に行番号を付ける 「t」→空白行以外に行番号を付ける 「n」→行番号を付けない 「p【パターン】」→指定した正規表現の【パターン】に一致する行のみ行番号を付ける use STYLE for numbering footer lines a:number all lines t:number only nonempty lines n:number no lines pBRE:number only lines that contain a match for the basic regular expression, BRE |
| --footer-numbering=【ルール】 | 指定したルールに従ってフッタ部の行番号を付与する 「a」→すべての行に行番号を付ける 「t」→空白行以外に行番号を付ける 「n」→行番号を付けない 「p【パターン】」→指定した正規表現の【パターン】に一致する行のみ行番号を付ける use STYLE for numbering footer lines a:number all lines t:number only nonempty lines n:number no lines pBRE:number only lines that contain a match for the basic regular expression, BRE |
| -h【ルール】 | 指定したルールに従ってヘッダ部の行番号を付与する 「a」→すべての行に行番号を付ける 「t」→空白行以外に行番号を付ける 「n」→行番号を付けない 「p【パターン】」→指定した正規表現の【パターン】に一致する行のみ行番号を付ける use STYLE for numbering header lines a:number all lines t:number only nonempty lines n:number no lines pBRE:number only lines that contain a match for the basic regular expression, BRE |
| --header-numbering=【ルール】 | 指定したルールに従ってヘッダ部の行番号を付与する 「a」→すべての行に行番号を付ける 「t」→空白行以外に行番号を付ける 「n」→行番号を付けない 「p【パターン】」→指定した正規表現の【パターン】に一致する行のみ行番号を付ける use STYLE for numbering header lines a:number all lines t:number only nonempty lines n:number no lines pBRE:number only lines that contain a match for the basic regular expression, BRE |
| -i 【数字】 | ページ番号の増加量を【数字】にする。例えば「2」を指定したら、ページ番号は「1」「3」「5」と振られていく line number increment at each line |
| -line-increment=【数字】 | ページ番号の増加量を【数字】にする。例えば「2」を指定したら、ページ番号は「1」「3」「5」と振られていく line number increment at each line |
| -l 【数字】 | 【数字】行連続した空白行を1行とみなす group of NUMBER empty lines counted as one |
| --join-blank-lines=【数字】 | 【数字】行連続した空白行を1行とみなす group of NUMBER empty lines counted as one |
| -n 【書式】 | 行番号の書式を指定する 「ln」→左寄せ 「rn」→右寄せ 「rz」→右寄せ&0埋め insert line numbers according to FORMAT ln:left justified, no leading zeros rn:right justified, no leading zeros rz:right justified, leading zeros |
| --number-format=【書式】 | 行番号の書式を指定する 「ln」→左寄せ 「rn」→右寄せ 「rz」→右寄せ&0埋め insert line numbers according to FORMAT ln:left justified, no leading zeros rn:right justified, no leading zeros rz:right justified, leading zeros |
| -p | 論理ページ毎に行番号をリセットしない do not reset line numbers at logical pages |
| --no-renumber | 論理ページ毎に行番号をリセットしない do not reset line numbers at logical pages |
| -s【文字列】 | 行番号の後に指定した文字列を付与する add STRING after (possible) line number |
| --number-separator=【文字列】 | 行番号の後に指定した文字列を付与する add STRING after (possible) line number |
| -v【数字】 | 行番号の開始番号を指定する first line number on each logical page |
| --starting-line-number=【数字】 | 行番号の開始番号を指定する first line number on each logical page |
| -w【数字】 | 行番号の桁数(横幅)を指定する first line number on each logical page |
| --number-width=【数字】 | 行番号の桁数(横幅)を指定する first line number on each logical page |
| --help | ヘルプを表示する display this help and exit |
| --version | バージョン情報を表示する output version information and exit |
補足事項
「nl」コマンドには「論理ページ」という概念があります。
そして、それぞれの論理ページは「ヘッダ部」「本文」「フッタ部」の3つに分かれます。
例えば、以下の内容の「hoge.txt」が あったとしましょう。
@:@:@:
header
@:@:
body
abc
def
@:
footer
ghi
@:@:@:
ヘッダ
@:@:
本文
@:
フッタ
区切り文字として「@:」を指定したとします。
そうすると
「@:」×3→「@:@:@:」=ヘッダ部
「@:」×2→「@:@:」=本文
「@:」×1→「@:」=フッタ部
と解釈されます。
つまり
header
が1ページ目のヘッダ部、
body
abc
def
が1ページ目の本文、
footer
ghi
が1ページ目のフッタ部、
ヘッダ
が2ページ目のヘッダ部、
本文
が2ページ目の本文、
フッタ
が2ページ目のフッタ部という扱いになります。
それを踏まえて「nl」コマンドの使い方を見てみましょう。
まずオプションを付けないで実行してみます。
nl hoge.txt
を実行すると、以下の結果になります。
1 @:@:@:
2 header
3 @:@:
4 body
5 abc
6 def
7 @:
8 footer
9 ghi
10 @:@:@:
11 ヘッダ
12 @:@:
13 本文
14 @:
15 フッタ
ここでは区切り文字として「@:」を指定していません。
区切り文字未指定時は「\:」が区切り文字として扱われます。
「hoge.txt」の中に「\:」はありませんよね。
ですから「hoge.txt」は、論理ページが分かれていません。
最初から最後まで一塊として扱われています。
「-d」オプションを指定すると、論理ページの区切り文字を指定できます。
例えば
nl -d @: hoge.txt
を実行すると、以下の結果になります。
header
1 body
2 abc
3 def
footer
ghi
ヘッダ
1 本文
フッタ
ちょっと分かりづらいですが、論理ページとヘッダ部・本文・フッタ部が分割されて、本文の空白行以外にページ番号が振られています。
「-b」オプションを指定すると、本文に振るページ番号のルールを指定できます。
「-b a」は、すべての行に行番号を付与するオプションです。
nl -d @: -b a hoge.txt
を実行すると、以下の結果になります。
header
1 body
2
3
4 abc
5 def
6
footer
ghi
ヘッダ
1 本文
2
フッタ
空白行にも行番号が振られました。
「-b t」は、空白行以外に行番号を付与するオプションです。
nl -d @: -b t hoge.txt
を実行すると、以下の結果になります。
header
1 body
2 abc
3 def
footer
ghi
ヘッダ
1 本文
フッタ
空白行には行番号が振られていないですね。
「-b n」は、行番号を付与しないオプションです。
nl -d @: -b n hoge.txt
を実行すると、以下の結果になります。
header
body
abc
def
footer
ghi
ヘッダ
本文
フッタ
見事に行番号が振られていません。
「何の意味があるんだ?」って感じですね。
「-b p【パターン】」は、正規表現で指定したパターンが含まれる行にのみ行番号を振るオプションです。
例えば
nl -d @: -b pab hoge.txt
を実行すると、以下の結果になります。
header
body
1 abc
def
footer
ghi
ヘッダ
本文
フッタ
分かりますかね。
「ab」が含まれる行にのみ行番号が振られています。
これが「-b」オプションの使い方です。
同様の使い方で「-h」オプションを指定すると、ヘッダ部に行番号が付与されます。
「-f」オプションはフッタ部に行番号を付与するオプションです。
すべて指定して
nl -d @: -b a -h a -f a hoge.txt
を実行すると、以下の結果になります。
1 header
2
3 body
4
5
6 abc
7 def
8
9 footer
10 ghi
11
1 ヘッダ
2
3 本文
4
5 フッタ
ヘッダ部・本文・ボディ部に行番号が振られていますね。
ここでのポイントは
1.ヘッダ部・本文・ボディ部は連番
2.論理ページが変わると1から振り直し
の2点です。
一応、頭の片隅にでも置いておいてあげてください。
次は「-i」オプションを見てみましょう。
これは、ページ番号の増分を指定するオプションです。
例えば
nl -d @: -b a -h a -f a -i 2 hoge.txt
を実行すると、以下の結果になります。
1 header
3
5 body
7
9
11 abc
13 def
15
17 footer
19 ghi
21
1 ヘッダ
3
5 本文
7
9 フッタ
ページ番号が2ずつ増えていますよね。
「-l」は連続した空白行を1行とみなすオプションです。
例えば
nl -d @: -b a -h a -f a -l 2 hoge.txt
を実行すると、以下の結果になります。
1 header
2 body
3
4 abc
5 def
6 footer
7 ghi
1 ヘッダ
2 本文
3 フッタ
少しわかりにくいのですが
2 body
3
4 abc
に注目してください。
「-l」オプションを付けないときは
3 body
4
5
6 abc
でした。
空白行の扱いが変わっているのが分かるでしょうか。
「body」と「abc」の間の空白行は2行です。
「-l」オプションを付けないときは「4」と「5」で2行分数えられています。
「-l 2」は「空白行2行を1行と数えてね」な指定です。
ですから「-l」オプションを付けたときは「3」の1行分だけ数えられています。
「-n」オプションは行番号の書式を指定するオプションです。
「-n ln」を指定すると、行番号の数字が左寄せになります。
nl -d @: -b a -h a -f a -n ln hoge.txt
を実行すると、以下の結果になります。
1 header
2
3 body
4
5
6 abc
7 def
8
9 footer
10 ghi
11
1 ヘッダ
2
3 本文
4
5 フッタ
同様に「-n rn」(右寄せ)を指定すると、以下の結果になります。
1 header
2
3 body
4
5
6 abc
7 def
8
9 footer
10 ghi
11
1 ヘッダ
2
3 本文
4
5 フッタ
同様に「-n rz」(右寄せ、0埋め)を指定すると、以下の結果になります。
000001 header
000002
000003 body
000004
000005
000006 abc
000007 def
000008
000009 footer
000010 ghi
000011
000001 ヘッダ
000002
000003 本文
000004
000005 フッタ
そろそろ、書くのが面倒くさくなってきました。
「-p」オプションを指定すると、論理ページが分かれてもページ番号が連番になります。
例えば
nl -d @: -b a -h a -f a -p hoge.txt
を実行すると、以下の結果になります。
1 header
2
3 body
4
5
6 abc
7 def
8
9 footer
10 ghi
11
12 ヘッダ
13
14 本文
15
16 フッタ
連番になっていますね。
「-s」オプションを指定すると、ページ番号の後に指定文字列を付与できます。
例えば
nl -d @: -b a -h a -f a -s hoge hoge.txt
を実行すると、以下の結果になります。
1hogeheader
2hoge
3hogebody
4hoge
5hoge
6hogeabc
7hogedef
8hoge
9hogefooter
10hogeghi
11hoge
1hogeヘッダ
2hoge
3hoge本文
4hoge
5hogeフッタ
ページ番号の後に「hoge」という文字列がくっついていますね。
「-v」オプションを指定すると、行番号の開始番号を指定できます。
例えば
nl -d @: -b a -h a -f a -v 3 hoge.txt
を実行すると、以下の結果になります。
3 header
4
5 body
6
7
8 abc
9 def
10
11 footer
12 ghi
13
3 ヘッダ
4
5 本文
6
7 フッタ
行番号が「3」からになっていますね。
「-w」オプションは、行番号の桁数(横幅)を指定するオプションです。
例えば
nl -d @: -b a -h a -f a -w 2 hoge.txt
を実行すると、以下の結果になります。
1 header
2
3 body
4
5
6 abc
7 def
8
9 footer
10 ghi
11
1 ヘッダ
2
3 本文
4
5 フッタ
行番号のスペースが2桁分になっていますね。
