Linuxコマンド辞典 nlコマンド(テキスト処理)

ファイルの先頭に行番号をつけて出力する「nl」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

ファイルの内容に行番号をつけて出力します。ファイル名を指定しなかったり、「-」として指定した場合は標準入力を読み込んで出力します。

オプションに指定できる「スタイル」はa(すべての行に行番号を)、t(空行を除くすべての行に行番号を)、n(行番号をつけない)を選択できます。また、pでその後ろに正規表現を用意すれば、マッチする行にのみ行番号をつけます。

1つのテキストファイルに「セクションデリミタ」を利用するとヘッダ、ボディ、フッタでまとめた論理ページを複数作ることができます。

例えば、セクションデリミタを「\:」に指定し、次ページのようなテキストファイルを作成するとします。

書式

$ nl [オプション] [ファイル名]

オプション

-b スタイル
–body-numbering=スタイル
ボディセクションに行番号をつける
-d 文字
–section-delimiter=文字
セクションデリミタを指定する(デフォルトは「\:」)
-f スタイル
–footer-numbering=スタイル
フッタセクションに行番号をつける
-h スタイル
–header-numbering=スタイル
ヘッダセクションに行番号をつける
-i 数字
–line-increment=数字
行番号の増加単位を指定する
-l 数字
–join-blank-lines=数字
連続する空行を指定した数字の行数とする
-n フォーマット
–number-format=フォーマット
行番号記述フォーマットを指定する
-p
–no-renumber
論理ページごとに行数をリセットしない
-s 文字
–number-separator=文字
行番号と内容の間に指定した文字を挿入する
-v 数字
–starting-line-number=数字
行番号を指定した数字から始める
-w
–number-width=数字
行番号の前の空白数を指定する

ファイル内の行に行番号を付加する

空行に関しては行番号が振られません。

$ nl ファイル名

実行結果

[sunarin@localhost work]$ nl Animal_garden_unix.txt 
     1  ライオン
     2          インドライオン  Indian lion
     3          バーバリーライオン      Barbary lion
     4          セネガルライオン        P.l. senegalensis
     5          コンゴライオン  Northeast Congo Lion
       
     6  サイ
     7          キタシロサイ Northern white rhinoceros
     8          ミナミシロサイ  Southern white rhinoceros
     9   
[sunarin@localhost work]$ 

ファイル内のすべての行に行番号を付加する

すべての行に行番号を付けるには、「-ba」オプションを使用します。

$ nl -ba ファイル名

実行結果

[sunarin@localhost work]$ nl -ba Animal_garden_unix.txt 
     1  ライオン
     2          インドライオン  Indian lion
     3          バーバリーライオン      Barbary lion
     4          セネガルライオン        P.l. senegalensis
     5          コンゴライオン  Northeast Congo Lion
     6 
     7  サイ
     8          キタシロサイ Northern white rhinoceros
     9          ミナミシロサイ  Southern white rhinoceros
    10   
[sunarin@localhost work]$ 

空行に行番号を付加する

$ nl -bp^$ ファイル名

実行結果

[sunarin@localhost work]$ nl -bp^$ Animal_garden_unix.txt 
       ライオン
        インドライオン  Indian lion
        バーバリーライオン      Barbary lion
        セネガルライオン        P.l. senegalensis
        コンゴライオン  Northeast Congo Lion
     1 
       サイ
        キタシロサイ Northern white rhinoceros
        ミナミシロサイ  Southern white rhinoceros
        
[sunarin@localhost work]$ 

行番号とファイル内容の間に記号を挿入する

$ nl -s "挿入する文字" ファイル名

実行結果

行番号と文字列の間に:(コロン)を挿入します。

[sunarin@localhost work]$ nl -s":" Animal_garden_unix.txt 
     1:ライオン
     2: インドライオン  Indian lion
     3: バーバリーライオン      Barbary lion
     4: セネガルライオン        P.l. senegalensis
     5: コンゴライオン  Northeast Congo Lion
       
     6:サイ
     7: キタシロサイ Northern white rhinoceros
     8: ミナミシロサイ  Southern white rhinoceros
     9: 
[sunarin@localhost work]$ 

行番号を整形して付加する

-nのフォーマットでは「ln」(左寄せ)、「rn」(右寄せ)、「rz」(右寄せゼロ詰め)を指定できます。-wオプションで有効桁数を指定します。

$ nl -w2 -n rz ファイル名

実行結果

2桁の行番号に整形して付加しています。

[sunarin@localhost work]$ nl -w2 -n rz Animal_garden_unix.txt 
01      ライオン
02              インドライオン  Indian lion
03              バーバリーライオン      Barbary lion
04              セネガルライオン        P.l. senegalensis
05              コンゴライオン  Northeast Congo Lion
   
06      サイ
07              キタシロサイ Northern white rhinoceros
08              ミナミシロサイ  Southern white rhinoceros
09       
[sunarin@localhost work]$ 

セクションで分けてボディだけ番号を付加する

$ nl -baファイル名

実行結果

「\:」が3つ連続するのはヘッダの始まり、2つはボディ、1つはフッタの始まりを示します。

「-b」オプションでボディ、「-f」オプションでヘッダ、「-h」オプションでフッタにそれぞれ番号を振るか指定できます。

[sunarin@localhost work]$ cat Animal_garden_unix_spc.txt 
\:\:\:
ヘッダ
\:\:
ライオン
    インドライオン Indian lion
    バーバリーライオン Barbary lion
    セネガルライオン P.l. senegalensis
    コンゴライオン Northeast Congo Lion
サイ
    キタシロサイ Northern white rhinoceros
    ミナミシロサイ Southern white rhinoceros
\:
[sunarin@localhost work]$ 
[sunarin@localhost work]$ nl -ba Animal_garden_unix_spc.txt 
       ヘッダ

     1  ライオン
     2      インドライオン Indian lion
     3      バーバリーライオン Barbary lion
     4      セネガルライオン P.l. senegalensis
     5      コンゴライオン Northeast Congo Lion
     6  サイ
     7      キタシロサイ Northern white rhinoceros
     8      ミナミシロサイ Southern white rhinoceros

       フッタ
[sunarin@localhost work]$