Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
2020/07/27
Linuxの nlコマンドの解説
Linuxのコマンドでファイルに行番号を表示するコマンド「nl」について解説します。
テキストファイルに行番号を表示するだけであれば「cat -b file_name
」のように「cat」コマンドでも可能です。
ですが、「nl」コマンドは行番号を表示するための専用コマンドですので、「cat」コマンドより細かな指定をした行番号表示処理を行うことが可能となっています。
ちなみに、「nl」は「Number Line(行番号)」の略です。
もう一つちなみに、「nl」の逆の「ln」というコマンドもあります。
「ln」コマンドはハードリンクやシンボリックリンクを設定するためのコマンドで、「link」の略になっています。お間違いのないように。
catコマンドに関しては、下記の記事で詳しく解説していますので、あわせて参考にしてください。
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
ファイルの内容を行番号を付与して表示する「nl」コマンド
「nl」コマンドは、ファイルの内容を行番号付で表示します。
nlコマンドの基本的な使用例
「nl」コマンドの基本的な使用例としては以下のようになります。
ファイルの内容を表示します。
1 2 3 4 5 6 |
$ nl file_name2 1 abcde 2 fghij 3 klmno |
「nl」コマンドのデフォルトでは、空白行には行番号を付与しません。
デフォルトの表示形式をオプションを付けた状態で表現すると以下の表記となります。
1 2 3 4 5 6 |
$ nl -b t file_name2 1 abcde 2 fghij 3 klmno |
「-b」オプションは行番号を付与するスタイルを指定するオプションで、「t」は空行以外に行番号を付番するスタイルです。
「-b」オプションのその他のスタイルとしては、「a」はすべての行に対して行番号を付与するスタイルで、「n」は行番号を表示しないスタイルがあります。
また、catコマンドでは「-n」オプションを使うことで同様に行番号を表示することができます。
1 2 3 4 5 6 |
$ cat -b file_name2 1 abcde 2 fghij 3 klmno |
nlコマンドの主なオプション
nlコマンドの主なオプションは以下の通りとなっています。
オプション | 説明 |
---|---|
-i行数、–line-increment=行数 | 行番号の増分を指定する |
-l行数、–join-blank-lines=行数 | 指定した数以下の空行を 1つとして数える |
-w幅、–number-width=幅 | 行番号を表示する列の幅を指定する |
-nフォーマット、–number-format=フォーマット | 行番号の出力形式を指定する |
-s文字列、–number-separator=文字列 | 行番号の後ろの文字列を指定する |
-v行番号、–starting-line-number=行番号 | 論理改ページの先頭行番号を指定する |
-d区切り、–section-delimiter=区切り | 論理ページの区切り記号を指定する(2文字で指定。1文字だけの指定の場合は 2文字目は「:」を指定したものとする) |
-p、–no-renumber | 論理改ページで行番号をリセットしない |
-bスタイル、–body-numbering=スタイル | 本文の行番号のスタイルを指定する |
-fスタイル、–footer-numbering=スタイル | フッタの行番号のスタイルを指定する |
-hスタイル、–header-numbering=スタイル | ヘッダの行番号のスタイルを指定する |
-bオプションで行番号を付与するスタイルを指定する
先にも紹介しましたが「-b」オプション+スタイル指定、で行番号を付与するスタイルを指定することができます。
「a」スタイル:すべての行に対して行番号を付与する
1 2 3 4 5 6 |
$ nl -b a file_name2 1 abcde 2 fghij 3 4 5 klmno |
「-b」オプションに「a」スタイルを指定することですべての行に行番号を付与することができます。
ファイルを表示する catコマンドで同様の表示する場合は、下記のように nオプションを使用します。
1 2 3 4 5 6 |
$ cat -n file_name2 1 abcde 2 fghij 3 4 5 klmno |
「t」スタイル:空行以外に対して行番号を付与する
1 2 3 4 5 6 |
$ nl -b t file_name2 1 abcde 2 fghij 3 klmno |
「-b」オプションに「t」スタイルを指定することで空行以外の行に行番号を付与することができます。
これは、先にも紹介しましたが「nl」コマンドでオプションを指定しないデフォルトの状態がこの状態となります。
また、ファイルを表示する catコマンドで同様の表示する場合は、下記のように bオプションを使用します。
1 2 3 4 5 6 |
$ cat -b file_name2 1 abcde 2 fghij 3 klmno |
「n」スタイル:すべての行に行番号を付与しない
1 2 3 4 5 6 |
$ nl -b n file_name2 abcde fghij klmno |
「-b」オプションに「n」スタイルを指定することで行番号を付与しません。
「cat」コマンドでオプションを指定せずに表示したときと似たような表示にはなりますが、行番号を付与しなくても行番号が表示されるスペースは空けて表示されますので、その点だけが異なります。
「p」スタイル:パターンに一致する行に対して行番号を付与する
1 2 3 4 5 6 |
$ nl -b p"^$" file_name2 abcde fghij 1 2 klmno |
「-b」オプションに、「p」スタイルに加えてパターン(正規表現)を指定することで、パターンに一致する文字列の行に行番号を付与します。
例えば、上記は「^$
」を指定しています。
これは空行であることを表す正規表現ですので、空行のみの行に行番号が表示されています。
その他の例としては、空行以外の行に行番号を付与する場合は以下のように指定をします。
1 |
$ nl -b p"\w" file_name2 |
また、「abc」が含まれる行に行番号を付与する場合は以下のように指定します。
1 2 |
$ nl -b p"abc" file_name2 $ nl -b pabc file_name2 |
「-p」に「abc」をつなげて「pabc」としても、「”(引用符)」を付けて「p”abc”」としても OKです。
ですが、「p」と「abc」や「”(引用符)」の間にスペースを入れてはいけません。
-f、-hオプションで行番号を付与するスタイルを指定する
先に「-b」オプションの紹介をしましたが、「-b」の「b」は「body(本文)」のことです。
そして、ここで紹介する「-f」は「footer(フッタ)」、「h」は「header(ヘッダ)」のことになり、それぞれフッタ、ヘッダの行番号を付与する条件を指定することができます。
設定するスタイルは、「-b」と同じく「a」「t」「n」「p」があり、「-f a」「-h t」のように指定を行います。
-iオプションで行番号の増分を指定する
「-i」オプションに数値を加えて指定することで、下記のように行番号をカウントする際にいくつずつ増やしていくかを指定することができます。
1 2 3 4 |
$ nl -i10 file_name1 1 abcde 11 fghij 21 klmno |
-wオプションで行番号を表示する列の幅を指定する
「-w」オプションに数値を加えて指定することで、下記のように行番号を表示する幅を指定することができます。
1 2 3 4 5 6 7 8 |
$ nl file_name1 1 abcde 2 fghij 3 klmno $ nl -w10 file_name1 1 abcde 2 fghij 3 klmno |
ちなみに、行番号の後ろはタブが編集されていますので、行番号と文字列の間隔は、タブの設定によって違ってきます。
行番号の後ろのタブを違う文字列に変更する場合は、後述する「-s」オプションを使用します。
-nオプションで行番号の出力形式を指定する
「-n」オプションは、表示する行番号をどのようなフォーマットで表示するか、を指定することができるオプションです。
指定することができるフォーマットは以下の通りです。
ln:左寄せ
rn:右寄せ
rz:ゼロ埋め
「ln」フォーマットで左寄せ
「ln」フォーマットを指定することで左寄せで行番号を表示します。
下記の例では、分かりやすく「-i10」オプションも使用して桁数を増やしています。
1 2 3 4 |
$ nl -n ln -i10 file_name1 1 abcde 11 fghij 21 klmno |
「rn」フォーマットで右寄せ
「rn」フォーマットを指定することで右寄せで行番号を表示します。
こちらはデフォルトの設定になります。
1 2 3 4 |
$ nl -n rn file_name1 1 abcde 2 fghij 3 klmno |
「rz」フォーマットでゼロ埋め
「rz」フォーマットを指定することでゼロ埋めをして表示します。
デフォルトは「6桁」となっています。
1 2 3 4 |
$ nl -n rz file_name1 000001 abcde 000002 fghij 000003 klmno |
下記のように桁数を増やす「-w」オプションを使用し 10桁とした場合は下記のようになります。
1 2 3 4 |
$ nl -n rz -w10 file_name1 0000000001 abcde 0000000002 fghij 0000000003 klmno |
-sオプションで行番号の後ろの文字列を指定する
「-s」オプションは、付与した行番号の後ろに表示する文字列を指定することができるオプションです。
1 2 3 4 |
$ nl -s : file_name1 1:abcde 2:fghij 3:klmno |
デフォルトでは行番号の後ろにはタブが編集されていますが、このタブを違う文字列に変更したい場合に「-s」オプション+文字列を指定します。
文字列の指定では「”(引用符)」を使って囲むこともできます。
これを利用して、文字列の中にスペースを含めることもできます。
1 2 3 4 |
$ nl -s ": : " file_name1 1: : abcde 2: : fghij 3: : klmno |
今回の記事では、ファイルのテキストに行番号を付与する「nl」コマンドについて解説をしましたが、ファイルの内容、および、テキスト情報についての操作に関連するコマンドは下記の記事にまとめていますので、あわせて参考にしてください。
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
Linuxのbashで変数に値を追加する方法を多数紹介。+=や””を使う方法など
Linuxのbashで変数に値を代入する方法を解説。bashの変数の処理は柔軟で様々な方法を採れる。デリミタなしで値を追加する方法などを解説。
-
Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説
Linuxにtac、revというコマンドがある。catの逆の処理なのだが、tacは最終行から逆に表示し、revは行末の文字から逆に表示をすることを解説しつつその使い方について詳しく解説をする。
-
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
Linuxの行数、単語数、文字数、バイト数をカウントする「wc」コマンドの使い方の解説。find、lsと組み合わせてファイル数のカウント方法などを解説。
-
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説
Linuxでコマンドを設置するパスの設定情報である環境変数「PATH」の確認方法と環境変数「PATH」に新しいパスを追加する方法の解説。Linuxのシェルでの変数の扱い方についての解説も。
-
Linuxのマニュアルページ表示コマンドmanの解説
Linuxにはコマンド操作のオンラインマニュアルが用意されています。そのマニュアルを表示するコマンドが「man」です。「man」コマンドの使い方について解説します。
-
UNIX・Linuxの sedコマンドで特定の文字列を置換する方法
UNIX・Linuxのコマンドで特定の文字列を置換する sedコマンドの使い方と、perlコマンドを使っての方法を解説しています。
-
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド
Linuxでファイル、テキストを操作するコマンドのまとめ。cat、less、head、tail、split、tr、sedなど、ファイルを表示、置換、連結、分割などの各コマンドの使い方の紹介と詳細ページの紹介。
-
Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する
Linuxで実行したコマンドの履歴を確認するコマンド「history」。「history」の使い方、設定の変更、設定ファイルの設置場所について解説。「!番号」「!文字列」「!?文字列」など。
-
Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法
作成からn日経ったファイルを削除したい、そんなときにはfindコマンドを使う。コマンドの記述の方法は3種類あり、それぞれを解説。書き易さもあるがスピードに大きく差がある記述方法もある。
-
Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。