nlコマンドは、ファイルの内容や標準入力の内容に行番号を追加することができます。
目次
- 1 nlコマンドとは
- 2 nlコマンドの利用例
- 2.1 行番号を追加 (オプションなし)
- 2.2 行番号の表示形式の変更 (-nオプション)
- 2.3 行番号とファイルの内容の間の区切り文字を変更 (-sオプション)
- 2.4 行番号の長さを変更 (-wオプション)
- 2.5 ボディ部分の行番号追加のスタイル変更 (-bオプション)
- 2.6 ヘッダー部分の行番号追加のスタイル変更 (-hオプション)
- 2.7 フッター部分の行番号追加のスタイル変更 (-fオプション)
- 2.8 行番号の増分値の変更 (-iオプション)
- 2.9 空行での行番号の増分値の変更 (-lオプション)
- 2.10 セクションごとの行番号リセットを行わない (-pオプション)
- 2.11 行番号の初期値の設定 (-vオプション)
- 2.12 セクション分けの区切り文字を変更 (-dオプション)
- 3 参考
nlコマンドとは
nlコマンドは、入力ファイルまたは標準入力が与えられると標準出力にその入力ファイルや標準入力に行に行番号を追加した行を出力します。
また、nlコマンドは入力ファイル全体を論理的なページセクションに分けることができます。入力ファイル全体を一つのドキュメントとして扱い、入力ファイルの中にある決められた文字列を区切りとして、そのドキュメントをヘッダー、ボディ、フッターのセクションごとに分けることができます。
決められた文字列は、デフォルトでは、ヘッダー部分は「\:\:\:」という行から始まり、ボディ部分は「\:\:」という行から始まり、フッター部分は「\:」という行から始まることでセクションが分けることができます。
example.txt
1 2 3 4 5 6 |
\:\:\: header \:\: body \: footer |
セクションごとに分けると行番号をつけるかどうかのスタイルを変更することができます。
また、セクションが分かれていると行番号の割り付けがリセットされます。
nlコマンドの利用例
行番号を追加
(オプションなし)
nlコマンドは、入力ファイルまたは標準入力からの内容に行番号を追加することができます。
デフォルトでは、空行以外の行に行番号を追加します。全ての行に行番号をつけるかどうか等は-bオプションで変更することができます。
また、数字のフォーマットは6文字の右詰めがデフォルトになっています。これは-nオプションで変更できます。
コマンド例
1 |
nl test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii |
行番号の表示形式の変更
(-nオプション)
-nオプションは、フォーマットを指定して、行番号の表示形式を変更することができます。
フォーマットは以下の表にまとめます。
フォーマット
フォーマット | 意味 |
ln | 左詰め |
rn | 右詰め(デフォルト) |
rz | 右詰めで0で埋める |
左詰め(ln)
コマンド例
1 |
nl -n ln test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii |
右詰め(デフォルト)(rn)
コマンド例
1 |
nl -n rn test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii |
右詰めで0で埋め(rz)
コマンド例
1 |
nl -n rz test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
000001 aaa 000002 bbb 000003 ccc 000004 ddd 000005 eee 000006 fff 000007 ggg 000008 hhh 000009 iii |
行番号とファイルの内容の間の区切り文字を変更
(-sオプション)
-sオプションは、区切り文字を変更することができます。デフォルトの区切り文字はTABになります。
コマンド例
1 |
nl -s'||' test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1||aaa 2||bbb 3||ccc 4||ddd 5||eee 6||fff 7||ggg 8||hhh 9||iii |
行番号の長さを変更
(-wオプション)
-wオプションは、行番号の長さを指定することができます。
デフォルトは6文字になります。
コマンド例
1 |
nl -w3 -n rz test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
001 aaa 002 bbb 003 ccc 004 ddd 005 eee 006 fff 007 ggg 008 hhh 009 iii |
ボディ部分の行番号追加のスタイル変更
(-bオプション)
nlコマンドは、セクション分けを行うことができます。特にセクション分けを行っていない場合はボディ部分として認識されます。
-bオプションは、ボディ部分の行番号追加のスタイルを変更することができます。
スタイルは以下の表にまとめます。
スタイル
スタイル | 意味 |
a | 全ての行に行番号を追加 |
t | 空行以外の行に行番号を追加(ボディのデフォルト) |
n | 行番号を追加しない(ヘッダーとフッターのデフォルト) |
p正規表現 | 正規表現にマッチした行だけ行番号を追加 |
全ての行に行番号を追加
コマンド例
1 |
nl -b a test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 7 8 fff 9 ggg 10 hhh 11 12 iii |
空行以外の行に行番号を追加(ボディのデフォルト)
コマンド例
1 |
nl -b t test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii |
行番号を追加しない(ヘッダーとフッターのデフォルト)
コマンド例
1 |
nl -b n test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
正規表現にマッチした行だけ行番号を追加
コマンド例
1 |
nl -b p'^[abc]' test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1 aaa 2 bbb 3 ccc ddd eee fff ggg hhh iii |
ヘッダー部分の行番号追加のスタイル変更
(-hオプション)
-hオプションは、ヘッダー部分の行番号追加のスタイルを変更できます。スタイルは-bオプションと同じになります。
コマンド例
1 |
nl -h a header.txt body.txt footer.txt |
header.txt
1 2 3 4 5 6 |
\:\:\: header aaa bbb ccc |
body.txt
1 2 3 4 5 6 |
\:\: body ddd eee fff |
footer.txt
1 2 3 4 5 6 |
\: footer ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
1 header 2 aaa 3 bbb 4 5 ccc 1 body 2 ddd 3 eee 4 fff footer ggg hhh iii |
フッター部分の行番号追加のスタイル変更
(-fオプション)
-fオプションは、フッター部分の行番号追加のスタイルを変更できます。スタイルは-bオプションと同じになります。
コマンド例
1 |
nl -f a header.txt body.txt footer.txt |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
header aaa bbb ccc 1 body 2 ddd 3 eee 4 fff 1 footer 2 ggg 3 hhh 4 5 iii |
行番号の増分値の変更
(-iオプション)
-iオプションは行番号の増分値の数値を変更できます。デフォルトは1になります。
コマンド例
1 |
nl -i 2 test.txt |
test.txt
1 2 3 4 5 6 7 8 9 10 11 12 |
aaa bbb ccc ddd eee fff ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
1 aaa 3 bbb 5 ccc 7 ddd 9 eee 11 fff 13 ggg 15 hhh 17 iii |
空行での行番号の増分値の変更
(-lオプション)
-lオプションは空行での行番号の扱いを変更することができます。
コマンド例
1 |
nl -l 3 -b a body2.txt |
body2.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
\:\: body ddd eee fff jjj |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1 body 2 ddd 3 eee 4 5 6 fff 7 jjj |
セクションごとの行番号リセットを行わない
(-pオプション)
-pオプションをつけると、セクションごとでの行番号リセットを行わなくなります。
コマンド例
1 |
nl -p -ha -ba -fa header.txt body.txt footer.txt |
header.txt
1 2 3 4 5 6 |
\:\:\: header aaa bbb ccc |
body.txt
1 2 3 4 5 6 |
\:\: body ddd eee fff |
footer.txt
1 2 3 4 5 6 |
\: footer ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
1 header 2 aaa 3 bbb 4 5 ccc 6 body 7 ddd 8 eee 9 10 fff 11 footer 12 ggg 13 hhh 14 15 iii |
行番号の初期値の設定
(-vオプション)
-vオプションは、行番号の初期値を設定できます。
コマンド例
1 |
nl -v 3 -ha header.txt body.txt |
header.txt
1 2 3 4 5 6 |
\:\:\: header aaa bbb ccc |
body.txt
1 2 3 4 5 6 |
\:\: body ddd eee fff |
実行結果
1 2 3 4 5 6 7 8 9 10 11 |
3 header 4 aaa 5 bbb 6 7 ccc 3 body 4 ddd 5 eee 6 fff |
セクション分けの区切り文字を変更
(-dオプション)
-dオプションはセクション分けの区切り文字を変更することができます。
2文字を区切り文字として、その区切り文字を3回繰り返したものをヘッダー開始の区切り文字に、2回繰り返したものをボディ開始の区切り文字に、1回だけのものがフッター開始の区切り文字になります。
コマンド例
1 |
nl -d'+-' header_d1.txt body_d1.txt footer_d1.txt |
header_d1.txt
1 2 3 4 5 6 |
+-+-+- header aaa bbb ccc |
body_d1.txt
1 2 3 4 5 6 |
+-+- body ddd eee fff |
footer_d1.txt
1 2 3 4 5 6 |
+- footer ggg hhh iii |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
header aaa bbb ccc 1 body 2 ddd 3 eee 4 fff footer ggg hhh iii |
参考
外部リンクGnu Coreutils
外部リンクGnu Coreutils日本語版