[Linux] 行番号付きで出力する - nl

nlコマンドを利用すると、出力結果の各行の先頭に連番を付けることができます。

$ nl -w 1 -n ln file.txt
1   Apple
2   Orange
3   Banana

要は行番号ですね。デフォルトでは連番の後ろにはタブが挿入されます。

利用例

連番の書式を変更する

オプションを指定しないとデフォルトでは「文字幅は6桁」「0字詰めをしない」「右揃え」という指定になります。

$ nl file.txt
     1  Apple
     2  Orange
     3  Banana

文字幅

-wオプションで文字の幅を指定します。足りない桁は半角スペースが入ります。

$ nl -w 3 file.txt
  1 Apple
  2 Orange
  3 Banana

ゼロ字詰め・左右揃え

-nオプションで足りない桁をゼロで埋めるか、左右のどちらに数字を寄せるか一度に指定できます。

$ nl -w 5 -n rz file.txt
00001   Apple
00002   Orange
00003   Banana

ここで指定することのできる値は以下の3種類です。

ゼロ字詰め 左右揃え
ln なし
rn なし
rz あり

初見だと「なんやこれ…」状態ですが、おそらく以下のような意味だと思われます。

  • 1桁目の「l」がLeft、「r」がRight
  • 2桁目の「n」がNon、「z」がZero

初期値を変更する

-vオプションで最初の数値を指定できます。

$ nl -w 4 -n ln -v 1000 file.txt
1000    Apple
1001    Orange
1002    Banana

区切り文字を変更する

数字の後ろにデフォルトではタブが挿入されますが、-sオプションで変更することができます。CSV形式のようにカンマ区切りにしたい場合は以下の通り。

$ nl -w 1 -n ln -s ',' file.txt
1,Apple
2,Orange
3,Banana

連番を付ける条件

-bオプションでどの行に連番を付けるか指定できます。デフォルトでは空行には連番が付きません。

$ nl -w 1 -n ln -b t file.txt 
1   Apple

2   Orange

3   Banana

-bオプションに「a」を指定するとすべての行に連番を付与します。

$ nl -w 1 -n ln -b a file.txt
1   Apple
2   
3   Orange
4   
5   Banana

参考ページ

  • man nl