行番号を付けて出力する(nlコマンド)

概要

ファイルに行番号をつけて出力する方法は、catコマンド、awkコマンド、nlコマンドで出力できます。本記事では、「nlコマンド」を利用した場合の方法を説明します

catコマンドで行番号を表示

cat -n <ファイル名> で行番号をつけてで出力できます

$  cat -n test.log
     1	2016-02-01 13:48:01,137 error
     2	2016-02-01 13:48:01,137 hogehoge
     3	2016-02-01 13:48:01,137 linux
     4	2016-02-01 13:48:01,137 apache
     5	2016-02-01 13:48:01,137 log

awkコマンドで行番号を表示

awk '{print NR, $0}’ <ファイル名> で行番号をつけてで出力できます

$ awk '{print NR, $0}' test.log
1 2016-02-01 13:48:01,137 error
2 2016-02-01 13:48:01,137 hogehoge
3 2016-02-01 13:48:01,137 linux
4 2016-02-01 13:48:01,137 apache
5 2016-02-01 13:48:01,137 log

nlコマンドで行番号を表示

nl <ファイル名> で行番号をつけてで出力できます

$ nl test.log
     1	2016-02-01 13:48:01,137 error
     2	2016-02-01 13:48:01,137 hogehoge
     3	2016-02-01 13:48:01,137 linux
     4	2016-02-01 13:48:01,137 apache
     5	2016-02-01 13:48:01,137 log

nlコマンド オプション

nlコマンドでは、色々なオプションがあります。代表的なオプションを紹介します

空行は番号を付ける

nlコマンドで、オプションなしだと、空行には番号つけいないで出力されますが、
nl -b a <ファイル名> とすれば、空行にも番号がつきます

$ nl test1.log
     1	2016-02-01 13:48:01,137 error
     2	2016-02-01 13:48:01,137 hogehoge

     3	2016-02-01 13:48:01,137 linux


     4	2016-02-01 13:48:01,137 apache
     5	2016-02-01 13:48:01,137 log
$ nl -b a test1.log
     1	2016-02-01 13:48:01,137 error
     2	2016-02-01 13:48:01,137 hogehoge
     3
     4	2016-02-01 13:48:01,137 linux
     5
     6
     7	2016-02-01 13:48:01,137 apache
     8	2016-02-01 13:48:01,137 log

初期の番号を任意の番号から始める

通常では番号の始まりは「1」から開始されますが、
nl -v <任意の番号> <ファイル名> とすれば、初期の番号を指定して出力できます

$ nl -v 5 test.log
     5	2016-02-01 13:48:01,137 error
     6	2016-02-01 13:48:01,137 hogehoge
     7	2016-02-01 13:48:01,137 linux
     8	2016-02-01 13:48:01,137 apache
     9	2016-02-01 13:48:01,137 log

左側に詰めて出力

nlコマンドでは、出力された番号の左側には空白が何個ありますが、この空白を左詰めで出力するには
nl -n ln <ファイル名> とすれば、左側に詰めて出力されます

$ nl -n ln test.log
1     	2016-02-01 13:48:01,137 error
2     	2016-02-01 13:48:01,137 hogehoge
3     	2016-02-01 13:48:01,137 linux
4     	2016-02-01 13:48:01,137 apache
5     	2016-02-01 13:48:01,137 log

番号の増加分を指定する

nl -i <増加分> <ファイル名> とすれば、行番号の数字の増加分を指定できます

$ nl -i 4 test.log
     1	2016-02-01 13:48:01,137 error
     5	2016-02-01 13:48:01,137 hogehoge
     9	2016-02-01 13:48:01,137 linux
    13	2016-02-01 13:48:01,137 apache
    17	2016-02-01 13:48:01,137 log

先頭を0で埋める

nl -n rz <ファイル名> とすれば、先頭の空白を0で埋めることが出来ます

$ nl -n rz test.log
000001	2016-02-01 13:48:01,137 error
000002	2016-02-01 13:48:01,137 hogehoge
000003	2016-02-01 13:48:01,137 linux
000004	2016-02-01 13:48:01,137 apache
000005	2016-02-01 13:48:01,137 log

先頭からの空白の文字数を指定する

nl -n rz -w <空白文字数指定> <ファイル名> とすれば、先頭の空白の文字数を指定出来ます
初期値の文字数は5文字となっています

$ nl -n rz test.log
000001	2016-02-01 13:48:01,137 error
000002	2016-02-01 13:48:01,137 hogehoge
000003	2016-02-01 13:48:01,137 linux
000004	2016-02-01 13:48:01,137 apache
000005	2016-02-01 13:48:01,137 log
000006	2016-02-01 13:48:01,137 error
000007	2016-02-01 13:48:01,137 hogehoge
000008	2016-02-01 13:48:01,137 linux
000009	2016-02-01 13:48:01,137 apache
000010	2016-02-01 13:48:01,137 log

$ nl -n rz -w 3 test.log
001	2016-02-01 13:48:01,137 error
002	2016-02-01 13:48:01,137 hogehoge
003	2016-02-01 13:48:01,137 linux
004	2016-02-01 13:48:01,137 apache
005	2016-02-01 13:48:01,137 log
006	2016-02-01 13:48:01,137 error
007	2016-02-01 13:48:01,137 hogehoge
008	2016-02-01 13:48:01,137 linux
009	2016-02-01 13:48:01,137 apache
010	2016-02-01 13:48:01,137 log

スポンサーリンク