Linux にはテキストの整形や編集のためのさまざまなコマンドがあり、特に便利なコマンドの一つが nl コマンドです。このツールを使うと、テキストファイルや入力の各行に行番号を追加でき、内容を読みやすく整理しやすくなります。
nl コマンドは何をしますか?
この nl コマンドはテキストファイルの内容を表示し、 行番号 が既定で空でない行に追加されます。スクリプトを扱うときや大きなファイルを確認するときに特に便利で、デバッグや編集の際に行番号を追跡することが重要になります。
使用例: nl コマンド
次のスクリプトを含む hello-world.sh というファイルがあるとします。
#!/bin/bash
#
#This is a demo script that greets the world
#Author: Jose Navarro Varela
#Usage: ./hello-world.sh
clear
echo hello world
exit 0
行番号付きでファイルを表示するには、次のコマンドを実行するだけです。
nl hello-world.sh
出力は次のようになります。
1 #!/bin/bash
2 #
3 #This is a demo script that greets the world
4 #Author: Jose Navarro Varela
5 #Usage: ./hello-world.sh
6 clear
7 echo hello world
8 exit 0
既定では、 nl コマンドは空でない行にのみ番号を付けます。
すべての行に番号を付ける(空行を含む)
空行も番号付けに含めるには、 -b a オプションを使います:
nl -b a hello-world.sh
出力は次のようになります。
1 #!/bin/bash
2 #
3 #This is a demo script that greets the world
4 #Author: Jose Navarro Varela
5 #Usage: ./hello-world.sh
6
7 clear
8 echo hello world
9 exit 0
カスタム区切り文字を追加する
この nl コマンドでは、 -s オプションを使って行番号とテキストの間の区切り文字をカスタマイズできます。たとえば、 ... を区切り文字として追加するには:
nl -s "..." hello-world.sh
出力は次のようになります。
1...#!/bin/bash
2...#
3...#This is a demo script that greets the world
4...#Author: Jose Navarro Varela
5...#Usage: ./hello-world.sh
6...
7...clear
8...echo hello world
9...exit 0
その他のオプション
この nl コマンドには、カスタマイズのためのさらに多くのオプションがあります。たとえば次のとおりです。
-w:行番号フィールドの幅を指定します。-n:番号付けの形式を定義します(右揃え、左揃え、ゼロ埋め)。
次のコマンドでマニュアルページを確認すれば、利用可能なすべてのオプションを調べることができます。
man nl
nl コマンドの一般的な使用シナリオ
この nl コマンドはさまざまな場面で広く使われています。以下に、最も一般的なシナリオをいくつか示します。
1. シェルスクリプトのデバッグ
シェルスクリプトをデバッグするとき、エラーが発生する特定の行を参照する必要がある場合があります。 nl コマンドを使って行番号を追加すると、問題のある行を特定しやすくなります。
例:
nl my-script.sh
2. ドキュメントやコードレビューの準備
レビュー用にスクリプトやコードスニペットを共有する際、行番号を追加すると内容が読みやすくなり、議論の中で参照しやすくなります。
例:
nl config.conf > numbered-config.conf
3. 大きなテキストファイルの確認
大きなログファイル、設定ファイル、データファイルを扱うとき、行番号を追加すると移動や特定のセクションの参照に役立ちます。
例:
nl /var/log/syslog
4. 行番号付きでファイルを比較する
ファイルを比較する前に行番号を追加しておくと、相違点を特定しやすくなります。
例:
nl file1.txt > numbered-file1.txt
nl file2.txt > numbered-file2.txt
diff numbered-file1.txt numbered-file2.txt
5. レポート用に出力を整形する
この nl コマンドは、明確さのために番号付き行が必要なレポートやプレゼンテーション用にテキストファイルを整形するために使うことができます。
例:
nl report.txt > numbered-report.txt
6. 空行にも行番号を付けてスクリプトを表示する
スクリプトには、可読性のために重要な空行が含まれている場合があります。 -b a オプションを使えば、空行を含むすべての行に番号を付けることができます。
例:
nl -b a script.sh
7. 特定の形式に合わせて行番号をカスタマイズする
番号付きテキストファイルを紹介する際、カスタムの区切り文字や形式が必要になる場合があります。
例:
nl -s " -> " textfile.txt
nl コマンドを使うのはなぜですか?
この nl コマンドは、次の用途に使えるシンプルかつ強力なツールです。
- 特定の行を特定してスクリプトをデバッグすること。
- テキストファイルに行番号を追加して移動しやすくすること。
- ドキュメント作成や共有のために整形された出力を準備すること。