Linuxでテキストファイルを扱う際、「行番号を付けて表示したい」と思ったことはありませんか?
そんなときに役立つのが「nl
コマンド」です。cat -n
と似たようなことができるコマンドですが、より細かい制御が可能です。
この記事では、nl
コマンドの基本的な使い方から、よく使われるオプション、そしてcat
との違いまで、わかりやすく解説します。
Linux初心者の方から中級者の方まで、日常的な作業にすぐに活かせる内容ですので、ぜひ参考にしてください。
nl
コマンドは、指定したファイルまたは標準入力の各行に自動で行番号を付けて出力するLinux標準のコマンドです。
ファイルの内容を確認するときや、プログラムの行番号を表示したいときなど、意外と活躍の場面は多くあります。
コマンド名の「nl
」は、「number lines(行に番号を付ける)」の略です。
シンプルながらも、柔軟な行番号付けができる点が特徴です。
まずは最もシンプルな使い方から見てみましょう。
nl ファイル名
たとえば「sample.txt」というファイルが以下のような内容だった場合:
Hello world
This is a test.
Another line.
このファイルに対して nl sample.txt
を実行すると、以下のように出力されます:
1 Hello world
2 This is a test.
3 Another line.
デフォルトでは、空行には行番号を付けない仕様になっています。
この点が、cat -n
との大きな違いです(cat -n
は空行にも番号を付けます)。
空行にも番号を付けたい場合は、-ba
オプションを使います。
nl -ba sample.txt
このようにすると、空行を含めてすべての行に番号が振られます。
オプションの意味:
-b
は「ボディセクションの番号付けスタイル」を指定a
は「すべての行(all)」を対象にするデフォルトでは、右寄せ(右詰め)の行番号が出力されます。
これを変更したい場合は -n
オプションを使います。
オプション | 説明 |
---|---|
-n ln | 左詰め(left justified) |
-n rn | 右詰め(right justified)※デフォルト |
-n rz | ゼロパディング(zero-padded) |
例:
nl -n ln sample.txt # 行番号を左詰め
nl -n rz sample.txt # ゼロパディング(001、002のように表示)
nl
コマンドは、デフォルトでは「1」から行番号を付け始めます。-v
オプションを使えば、任意の数値から始められます。
nl -v 100 sample.txt
この例では、行番号が100から始まります。
通常は1行ごとに1ずつ番号が増えますが、-i
で増分を指定することも可能です。
nl -i 10 sample.txt
この場合、行番号は10, 20, 30…となって表示されます。
-w
オプションで行番号の幅を指定できます。たとえば3桁でゼロ埋めしたい場合:
nl -n rz -w 3 sample.txt
出力例:
001 Hello world
002 This is a test.
003 Another line.
nl
コマンドは、実は「ヘッダー(header)」「ボディ(body)」「フッター(footer)」という3つのセクションを認識します。
各セクションに対して番号付けを制御できるのが特徴です。
-b
(body)-h
(header)-f
(footer)例えば:
nl -b a -h n -f n sample.txt
この例では、
n
)セクションを自動で判断するには、デリミタを使います。デフォルトでは次のように扱われます:
\:\:\:
… header と body の区切り\:\:
… body と footer の区切りこれらを自動判別させるケースは少ないかもしれませんが、スクリプト処理には便利です。
nl
と似た機能を持つコマンドに「cat -n
」があります。
この2つは一見似ていますが、細かな違いがあります。
比較項目 | nl | cat -n |
---|---|---|
空行への行番号 | 付けない(デフォルト) | 付ける(常に) |
行番号形式 | 制御可能(-n で指定) | 一律右詰め |
増分変更 | 可能(-i ) | 不可 |
開始番号変更 | 可能(-v ) | 不可 |
セクション制御 | あり(header/body/footer) | なし |
柔軟性 | 高い | シンプル |
まとめると、カスタマイズ性が高いのがnl
、
**シンプルで手軽に使えるのがcat -n
**です。
ログファイルの解析や、ソースコードの簡易表示など、nl
はさまざまな場面で使えます。
nl -ba error.log | grep "Exception"
→ 行番号付きで、エラー行のみを抽出できます。
nl -n rz -w 4 source.txt > numbered_source.txt
→ 行番号を付けたソースファイルを新規ファイルとして保存可能です。
nl
コマンドは、行番号を付けたいときに便利なLinux標準コマンドです。
一見シンプルですが、以下のような強力なオプションがそろっています:
-b
-v
-i
-n
や -w
cat -n
よりも柔軟にカスタマイズできるため、スクリプトやログ処理などにも活用できます。
これからLinuxを使いこなしていきたい方は、ぜひこのnl
コマンドも自分のツールボックスに加えてみてください。