[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

nl【コマンド】

pointこの用語のポイント

pointUNIX系で使えるコマンドだよ

point行番号をくっつけるよ

スポンサーリンク

簡単に書くよ

nl【コマンド】とは

行番号を付与するときに使うコマンド
です。

image piyo

詳しく書くよ

「nl」コマンドコマンドライン上から入力に対して行番号をくっつけるときに使うコマンドです。
UNIX系(LinuxとかMacとか)で使えます。

書き方は

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」コマンドの使い方を見ていきましょう。

……の前に、大事なことを説明しておきます。
オプションの動きを理解する上で必要なので、頑張って覚えてください。

「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」コマンドの使い方を見てみましょう。

まずオプションを付けないで実行してみます。

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桁分になっていますね。

ふぃ~、やっと終わりました。
「nl」コマンドの使い方は、そんなところです。

image piyo2

一言でまとめるよ

まぁ「nl」ってコマンドが出てきたら「行番号を付けるときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク