連載
» 2017年03月30日 05時00分 UPDATE

Linux基本コマンドTips(98):【nl】コマンド――テキストファイルを行番号付きで出力する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「nl」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

連載目次

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、テキストファイルを行番号付きで出力する「nl」コマンドです。

nlコマンドとは?

 「nl」は、テキストファイルを行番号付きで出力するコマンドです。「cat」コマンドの「-n」オプション(本連載第1回参照)でも行番号を付けることができますが、nlコマンドではより細かい設定が可能です。



nlコマンドの書式

nl [オプション] ファイル1 ファイル2……

※[ ]は省略可能な引数を示しています




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

 nlコマンドの主なオプションは次の通りです。

短いオプション 長いオプション 意味
-i行数 --line-increment=行数 行番号の増分を指定する(デフォルトは1)
-l行数 --join-blank-lines=行数 指定した数以下の空行を1つとして数える
-w幅 --number-width=幅 行番号を表示する列の幅を指定する
-nフォーマット --number-format=フォーマット 行番号の出力形式を「ln」「rn」「rz」で指定する(ln=左ぞろえ/0で埋めない、rn=右ぞろえ/0で埋めない、rz=右ぞろえ/0で埋める)
-s文字列 --number-separator=文字列 行番号の後ろに文字列を加える
-v行番号 --starting-line-number=行番号 論理改ページの先頭行番号を指定する
-d区切り --section-delimiter=区切り 論理ページの区切り記号を指定する(2文字で指定、1文字だけ指定した場合2文字目は「:」になる)
-p --no-renumber 論理改ページで行番号をリセットしない
-bスタイル --body-numbering=スタイル 本文の行番号のスタイルを指定する(スタイルの指定は下の表参照)
-fスタイル --footer-numbering=スタイル フッタの行番号のスタイルを指定する
-hスタイル --header-numbering=スタイル ヘッダの行番号のスタイルを指定する

●-b、-f、-hオプションで指定するスタイル
オプション 意味
a 全ての行に対して行番号を付ける
t 空行以外に対して行番号を付ける
n 空行に対して行番号を付ける
pパターン パターン(基本正規表現)に一致する行に対して行番号を付ける

【※】オプションを何も指定しなかった場合「-v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn」で実行される





テキストファイルを行番号付きで出力する

 「nl ファイル名」で、指定したテキストファイルを行番号付きで出力します。ファイルは複数指定することが可能で、複数指定した場合は連結されて、通しの行番号が付けられます。

コマンド実行例

nl ファイル名

cat ファイル名 | nl

(テキストファイルを行番号付きで出力する)(画面1


画面1 画面1 「/etc/shells」をnlコマンドで行番号付きで表示した


行番号のフォーマットを指定する

 「-w」オプションで行番号の桁数、「-n」オプションで右寄せ/左寄せなどのフォーマットを指定できます。デフォルトの桁数は6桁です。

 フォーマットは「ln」「rn」「rz」のいずれかで指定します。lnは左ぞろえ、rnとrzは右ぞろえで、rzは「000001」のようにゼロで埋められます。

 また、行番号の後ろにはタブ(TAB)記号が出力されますが、これを変更したい場合は「-s」オプションを指定します。例えば、「1:」のように数字の後ろに「:」を出力したい場合は「-s:」、「1: 」のように「:」と空白を出力したい場合は引用符を使い「-s": "」のように指定します。

コマンド実行例

nl -w3 -nrn ファイル名

(3桁で数字を左寄せにして出力する)

nl -w3 -nrz ファイル名

(3桁で「001」のようにゼロ入りで出力する)

nl -w3 -nrz -s": " ファイル名

(「区切り文字「:」と空白にする)


 以下の画面2では、オプションを試しやすくするため「cat ファイル名 | nl」のように、catコマンドでファイルを出力してnlコマンドに渡しています。

画面2 画面2 「w」オプションで行番号の桁数、「-n」オプションで右寄せ/左寄せなどの出力フォーマットを指定できる


条件に合った行にだけ行番号を付ける

 「-bpパターン」のように指定することで、“条件に合った行にだけ行番号を付ける”ことができます(画面3)。「-b」は行番号のスタイルを指定するオプションで、「p」は“パターンに合う行のみ”という意味です。

画面3 画面3 「-bp」オプションを付けると条件に合った行にだけ行番号を付けることができる

 例えば、「aliasという文字列を含む行だけ」であれば「-bpalias」のように指定します。「-bp"alias"」のように引用符(")を付けても構いません。

 なお、「-b」オプションを指定していない場合、行番号は“空行以外”に対して付けられます(「-bt」相当)。全ての行に行番号を付けたい場合は「-ba」、空行のみに行番号を付けたい場合は「-bn」とします。

 パターンには基本正規表現が使用できます。例えば、「aliasから始まる行」であれば、「-bp^alias」とします(画面4)。また、「#から始まらない行」であれば「-bp^[^#]」とします(本連載第10回参考)

画面4 画面4 「-b」オプションで指定するパターンには正規表現を使用できる


ヘッダ、本文、フッタに行番号を付ける

 nlコマンドでは区切りとなる行を入れておくことで、テキストファイルを「ヘッダ」「本文」「フッタ」に分けて、それぞれの出力スタイルを決めることができます。

 区切りとなる行は2文字で指定します。デフォルトは「\:」で、「\:\:\:」という行をヘッダの開始、「\:\:」という行を本文の開始、「\:」をフッタの開始行と見なします。区切り文字は「-d」オプションで変更できます。

 出力スタイルは、ヘッダ部分を「-h」オプション、本文を「-b」オプション、フッタ部分を「-f」オプションで指定します。何も指定しなかった場合は、本文の空行以外に行番号が出力されます。

 以下の画面5では表示を見やすくするために、行番号の後の区切り文字を「-s": "」と指定しています。

画面5 画面5 テキストファイルをヘッダ、本文、フッタで区切った例

 ヘッダ、本文、フッタそれぞれで全ての行に行番号を付ける場合は、「-ha -ba -fa」のように指定します。また、「-p」オプションで通しの行番号となります(画面6)。

画面6 画面6 ヘッダ、本文、フッタの全ての行に行番号を付ける場合は「-ha -ba -fa」と指定する


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー(LinuxはPC-486DXから)。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、ライターとして活動。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。