cat -nオプションの使い方|Linuxで全ての行に行番号を付ける方法を解説
生徒
「先生、テキストファイルの中身を見たいときによくcatコマンドを使うんですが、行番号があったらもっと見やすいと思うんです。」
先生
「確かに、行番号があると読みやすくなりますよね。そんなときはcat -nオプションが便利ですよ。」
生徒
「えっ、そんなオプションがあるんですか?どうやって使うんですか?」
先生
「それでは、cat -nの基本的な使い方から、実際の例まで一緒に見ていきましょう!」
1. cat -nとは?
catコマンドは、Linuxでファイルの中身を表示する基本的なコマンドのひとつです。「キャット」と読みます。もともとの意味は「concatenate(連結する)」ですが、実際には「中身を見る」用途でよく使われます。
そのcatコマンドに-nオプションをつけると、すべての行に自動的に行番号をつけて表示してくれます。複数行のファイルを読むときに、どこを見ているのか分かりやすくなるので、とても便利な機能です。
2. 基本的な使い方
例えば、example.txtというファイルがあるとします。その中身を、行番号つきで表示したい場合は、以下のように入力します。
cat -n example.txt
1 こんにちは
2 今日も良い天気ですね
3 明日も晴れるといいですね
このように、行の先頭に数字が付いて表示されます。これがcat -nの特徴です。
3. 実際にファイルを作って試してみよう
まだexample.txtがない場合は、次のようにして作成できます。
echo -e "こんにちは\n今日も良い天気ですね\n明日も晴れるといいですね" > example.txt
この-eオプションは、\n(改行)を認識させるためのものです。そして、作成したファイルに対してcat -nを使えば、先ほどのように行番号つきで表示されます。
4. catだけじゃない!似たようなコマンドとの違い
cat -nと似たコマンドで、nlというものもあります。nlは「number lines(行に番号を付ける)」の略で、目的は同じですが、より細かい設定(空行の扱いや桁数の指定など)ができます。
nl example.txt
1 こんにちは
2 今日も良い天気ですね
3 明日も晴れるといいですね
見た目は似ていますが、cat -nはよりシンプルで直感的なので、初心者にはこちらの方が扱いやすいです。
5. cat -nとcat -bの違いに注意!
実はcatには、-bというオプションもあります。こちらは空行を除いて行番号をつけるという違いがあります。
たとえば、空行を含むファイルがあったとしましょう。
echo -e "1行目\n\n3行目" > sample.txt
このとき、cat -nはすべての行に番号をつけますが、
cat -n sample.txt
1 1行目
2
3 3行目
cat -bでは空行には番号をつけません。
cat -b sample.txt
1 1行目
2 3行目
どちらが便利かは目的次第ですが、cat -nは「すべての行に確実に番号をつけたい」場合に向いています。
6. cat -nはファイルが複数でも使える!
複数のファイルをまとめて番号付きで表示したいときも、cat -nは使えます。例えば、file1.txtとfile2.txtを連結して、通し番号で表示したい場合は次のようにします。
cat -n file1.txt file2.txt
1 ファイル1の1行目
2 ファイル1の2行目
3 ファイル2の1行目
4 ファイル2の2行目
このように、ファイルをまたいでも連番で行番号が振られるので、比較や確認作業の際にとても便利です。
7. 行番号つき出力を別ファイルに保存する方法
cat -nで表示した内容を、別のファイルとして保存しておきたいときは、リダイレクト(>)を使います。
cat -n example.txt > numbered.txt
このコマンドで、example.txtの内容に行番号をつけてnumbered.txtというファイルに保存できます。保存したファイルは、あとで印刷や共有するときにも便利です。
まとめ
今回の記事では、Linux環境で非常に利用頻度の高いcat -nオプションについて、その基本から応用的な使い方、さらには類似コマンドとの違いまでを詳しく解説してきました。テキストファイルの内容を確認する際に、行番号が表示されているかどうかで、作業効率や可読性は大きく変わります。特に、プログラムのソースコードや設定ファイル、膨大なログデータを確認する場面において、このオプションは必須のスキルと言えるでしょう。
cat -nオプションの重要ポイント
これまでに学んだ内容を振り返り、実務で役立つ知識を整理しましょう。以下の表は、今回紹介した主要なコマンドとその特徴を比較したものです。
| コマンド | 主な役割・特徴 |
|---|---|
| cat -n [ファイル名] | 全ての行(空行を含む)に一貫した行番号を付与して表示する。最優先で覚えるべき基本オプション。 |
| cat -b [ファイル名] | 文字が入っている行のみに行番号を付与し、空行はカウントから除外する。 |
| nl [ファイル名] | 行番号付与に特化した専用コマンド。表示形式や桁数など、より高度なカスタマイズが可能。 |
応用的な活用シーン
実戦的なテクニックとして、複数のファイルを連結しながら行番号を振る方法や、その結果を新しいファイルとして出力する方法についても触れました。例えば、開発現場において「複数のログファイルを一つのファイルにまとめ、かつ行番号を振って共有したい」というケースでは、リダイレクト機能との組み合わせが非常に強力です。
以下に、一般ユーザー権限で実行する際の標準的な操作手順を再度おさらいします。
cat -n text1.txt text2.txt > combined_with_numbers.txt
(出力結果はファイルに保存されるため、画面には表示されません)
また、システム全体の設定ファイルを確認する際など、管理者権限が必要な場合には、ルートユーザー(root)として実行することもあります。その際のコマンド入力例は以下の通りです。
cat -n /etc/hosts
1 127.0.0.1 localhost
2 ::1 localhost ip6-localhost ip6-loopback
3 ff02::1 ip6-allnodes
4 ff02::2 ip6-allrouters
Linuxのコマンドライン操作は、こうした小さな「オプション」の積み重ねで、驚くほど便利に、そして正確になります。最初から全てのオプションを暗記する必要はありませんが、「行番号を出したいときは -n」というフレーズだけでも覚えておけば、いざという時にスムーズに作業が進められるはずです。
これからサーバー構築やプログラミング学習を進めていく中で、テキストエディタを開くまでもない「ちょっとした確認」の機会は無数に訪れます。その際に、今回学んだcat -nを思い出して、スマートにコマンドを使いこなしてみてください。
生徒
「先生、ありがとうございました!cat -nを使うだけで、あんなに簡単に行番号が出るなんて驚きました。これならエラーが出ている行を探すのも楽になりそうです。」
先生
「そうですね。特にデバッグ作業中や、設定ファイルの特定の行について誰かと相談するときに『○行目を見てみて』と言えるようになるので、コミュニケーションもスムーズになりますよ。」
生徒
「なるほど。そういえば、空行を飛ばすcat -bというのもありましたよね。使い分けに迷いそうですが、基本はcat -nでいいんでしょうか?」
先生
「基本的にはcat -nを使っておけば間違いありません。ファイル全体の行数を知りたい時や、空行も含めて正確な位置を把握したい時がほとんどですからね。もし、文章がギッシリ詰まったファイルで、本文があるところだけを数えたいという特殊な場合にだけ-bを思い出せば大丈夫です。」
生徒
「わかりました!あと、リダイレクトを使ってファイルに保存するのも便利そうだと思いました。行番号付きのドキュメントをサッと作りたい時に使ってみます。」
先生
「素晴らしい着眼点ですね!Linuxのコマンドは、単体で使うよりも他の機能と組み合わせることで真価を発揮します。リダイレクトやパイプなど、他の便利な機能も少しずつ覚えていくと、どんどん楽しくなりますよ。」
生徒
「はい!一つずつ確実にマスターしていきたいです。まずは今日から、ファイルの中身を見るときは意識してcat -nを入力するようにします!」
先生
「その調子です。実際に手を動かしてコマンドを打つことが、習得への一番の近道ですからね。頑張りましょう!」