Linux nl コマンド

Linux コマンド大全


一、nl コマンド概要

nlnl コマンドは、Linux システムにおけるシンプルだが実用的なコマンドラインツールで、正式名称は「number lines」(行番号)です。その主な機能は、ファイルの内容を読み取り、各行に行番号を追加して、結果を標準出力に出力することです。

1.1 なぜ nl コマンドが必要なのか

日常の開発やシステム管理では、以下のようなニーズがよくあります:

  • コードやログファイルの特定の行をすばやく確認する
  • ファイルの内容を議論する際に、具体的な行番号を参照しやすくする
  • ファイルの内容に番号を付けて、後続の処理をしやすくする
  • 行番号付きのドキュメントやレポートを生成する

確かにcat -nでも同様の機能を実現できますがnlより豊富な行番号制御オプションを提供し、より複雑なニーズを満たすことができます。


二、基本構文とパラメータ

2.1 基本コマンド形式

実例

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

2.2 よく使うオプションの説明

オプション 説明
-b 行番号の計算ルールを指定する(後ろにスタイルを続ける)
-i 行番号の増分を設定する(デフォルトは1)
-n 行番号のフォーマットを設定する(左詰め/右詰め/0を付けない)
-s 行番号と内容の間の区切り文字を設定する
-v 開始行番号を設定する(デフォルトは1)
-w 行番号フィールドの幅(文字数)を設定する
-p ページ区切りで行番号をリセットしない

2.3 行番号計算ルール(-b オプション)

-bオプションの後には以下のスタイルを指定できます:

スタイル 説明
a すべての行に番号を付ける
t 空でない行のみに番号を付ける(デフォルト)
n 番号を付けない
p正则表达式 正規表現に一致する行のみに番号を付ける

三、実用サンプルデモ

3.1 基本用法:ファイルに行番号を追加する

実例

# example.txt のすべての空でない行に行番号を追加する
nl example.txt

# すべての行(空行を含む)に行番号を追加する
nl -b a example.txt

3.2 行番号フォーマットのカスタマイズ

実例

# 行番号の幅を3に設定し、右詰めフォーマットを使用する
nl -n rz -w 3 example.txt

# "|" を区切り文字として使用し、行番号を左詰めにする
nl -s " | " -n ln example.txt

3.3 高度な番号付けルール

実例

# 10から番号を開始し、増分を2にする
nl -v 10 -i 2 example.txt

# "error" を含む行のみに番号を付ける
nl -b perror example.log

3.4 複数ファイルの処理

実例

# 複数のファイルに連続して番号を付ける
nl file1.txt file2.txt

# 各ファイルに個別に番号を付ける
nl -p file1.txt file2.txt

四、他のコマンドとの比較

4.1 nl vs cat -n

特性 nl cat -n
デフォルトの動作 空でない行のみに番号を付ける すべての行に番号を付ける
フォーマット制御 豊富(配置、幅、区切り文字など) 限定的
番号付けルール カスタマイズ可能(正規表現マッチなど) 固定
パフォーマンス やや遅い やや速い

4.2 nl vs grep -n

grep -nでも行番号を表示しますが、主な用途は検索とフィルタリングであり、行番号は付加情報にすぎません。nlは行番号表示に特化して最適化されたツールです。


五、実際の応用シーン

5.1 コードレビュー

実例

# 行番号付きのコードファイルを生成して、議論をしやすくする
nl -w 3 -n rz source.py > numbered_source.txt

5.2 ログ分析

実例

# "ERROR" を含むログ行のみに番号を付ける
nl -b pERROR app.log | less

5.3 ドキュメント処理

実例

# 行番号付きのMarkdownドキュメントを生成する
nl -s ". " -w 2 -n rz README.md

六、注意事項とテクニック

  1. 空行の処理:デフォルトではnlは空行をスキップします。を使用すると-b aすべての行に強制的に番号を付けることができます
  2. 大容量ファイルの処理:超大容量ファイルの場合は、と組み合わせてless 或 head使用することを検討してください
  3. パイプラインでの使用:標準入力を受け取ることができます。例:cat file | nl
  4. フォーマットの一貫性:スクリプトではパラメータのセットを固定して使用し、出力フォーマットを統一することをお勧めします
  5. パフォーマンスの考慮:単純な行番号のニーズには、cat -nの方が速い場合があります

七、まとめと練習

7.1 練習問題

  1. テストファイルを作成するtest.txt5行のテキストと2つの空行を含む
  2. を使用してnlすべての行番号を表示する(空行を含む)
  3. 行番号を100から開始し、増分を5に設定する
  4. "::" を区切り文字として使用し、行番号の幅を4にする
  5. 結果をにリダイレクトするnumbered.txt

7.2 参考解答

実例

# テストファイルを作成する
echo -e "1行目\n\n2行目\n3行目\n\n4行目\n5行目" > test.txt

# nl コマンドを実行する
nl -b a -v 100 -i 5 -s "::" -w 4 test.txt > numbered.txt

# 結果を確認する
cat numbered.txt

Linux コマンド大全

その他の拡張