このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

新Linuxコマンド演習42

新Linuxコマンド演習42 概要

 「新Linuxコマンド演習42」では、テキストの各行に行番号を付けて整然と表示できる nlコマンド を学びます。
このコマンドは、ファイル内容の整形表示やスクリプト内でのデバッグ時に非常に役立ちます。
 特にログファイルや設定ファイルを扱う際、どの行に何が書かれているのかを明確にするのに便利です。

nlコマンドの書式と主なオプション

オプション説明使用例
-i 数値行番号の増加間隔を指定する(デフォルトは1)nl -i 3 file.txt
-s 文字列行番号と本文の間に区切り文字を指定するnl -s ":" file.txt
-w 数値行番号の表示幅を指定する(桁数指定)nl -w 5 file.txt
-b a空行を含むすべての行に番号を付与するnl -b a file.txt
-b t空行を除いた行のみに番号を付与する(デフォルト)nl file.txt

表の説明
 nl コマンドは cat -n に似ていますが、行番号のフォーマット(桁数、間隔、区切り文字)を細かく指定できる点が特徴です。
また、-b オプションで空行の扱いを制御でき、出力整形に柔軟性があります。

演習問題+模範解答例

演習01:/etc/passwd ファイルに行番号を振って表示する

問題
/etc/passwd ファイルの各行に行番号を付けて表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ nl /etc/passwd
     1	root:x:0:0:root:/root:/bin/bash
     2	bin:x:1:1:bin:/bin:/sbin/nologin
     3	daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4	adm:x:3:4:adm:/var/adm:/sbin/nologin
     5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
(省略)

解説

  • ファイルの各行に自動的に連番が付与されます。
  • cat -n コマンドでも同様の結果が得られますが、nl では表示幅や区切り文字を調整できます。

演習02:行番号を3つ飛ばしで表示する

問題
/etc/passwd ファイルに対して、行番号を3ずつ増加させて表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ nl -i 3 /etc/passwd
     1	root:x:0:0:root:/root:/bin/bash
     4	bin:x:1:1:bin:/bin:/sbin/nologin
     7	daemon:x:2:2:daemon:/sbin:/sbin/nologin
    10	adm:x:3:4:adm:/var/adm:/sbin/nologin
    13	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
(省略)

解説

  • -i オプションで 行番号のインクリメント値 を指定します。
  • -i 3 の場合、1 → 4 → 7 → 10… のように 3ずつ増加します。
  • コードやログ分析時に特定の行間を保って整理するのに有用です。

演習03:行番号の表示幅を5に設定する

問題
行番号の表示幅を5桁にして /etc/passwd を表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ nl -w 5 /etc/passwd
    1	root:x:0:0:root:/root:/bin/bash
    2	bin:x:1:1:bin:/bin:/sbin/nologin
    3	daemon:x:2:2:daemon:/sbin:/sbin/nologin
(省略)
   48	tanaka:x:1002:1002::/home/tanaka:/bin/bash
   49	watanabe:x:1003:1003::/home/watanabe:/bin/bash

解説

  • -w オプションは行番号の桁数(幅)を指定します。
  • ファイルが長い場合でも桁揃えが保たれ, 見やすい表示が可能になります。

演習04:行番号と本文の区切りに「 : 」を使用して表示する

問題
/etc/passwd ファイルを、行番号と本文の間を「 : 」で区切って表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ nl -s: /etc/passwd
     1:root:x:0:0:root:/root:/bin/bash
     2:bin:x:1:1:bin:/bin:/sbin/nologin
     3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4:adm:x:3:4:adm:/var/adm:/sbin/nologin
     5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
(省略)

解説

  • -s オプションで区切り文字列を指定します。
  • 区切りを変更することで、スクリプトやログ処理で行番号と本文を簡単に分離できます。

演習05:空行も含めてすべての行に番号を付ける

問題
ファイル内の空行にも行番号を付与して表示してください。

模範解答例

[suzuki@AlmaLinux ~]$ nl -b a /etc/rsyslog.conf 
     1	# rsyslog configuration file
     2	
     3	# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
     4	# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html 
     5	# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
     6	
     7	#### GLOBAL DIRECTIVES ####
     8	
     9	# Where to place auxiliary files
(省略)

解説

  • デフォルトでは空行には番号が付きません(-b t と同じ動作)。
  • -b a を使うことで空行にも番号を振ることができます。
  • 空行を区別して内容確認したい場合に有効です。

まとめ

 「新Linuxコマンド演習42」では、nl コマンドを使用してファイルに行番号を付ける方法を学びました。

学習ポイント

  • nl は cat -n より高機能な行番号付与ツール。
  • -i:番号の増分、-w:表示桁数、-s:区切り文字を自由に指定可能。
  • -b:空行の扱いを制御可能(-b a で空行にも番号を付ける)。
  • ログ解析や設定ファイルの調査時に役立つ。