nl 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于文本处理命令族(见文本处理命令族)。给文本加行号,
cat -n的"专业版"。
nl 给输入每行加行号再输出。比 cat -n 灵活——能控制哪些行编号、编号宽度、分隔符、起始号等。
一、基本用法
bash
nl file.txt # 给非空行加行号(空行不编号)
nl -ba file.txt # -ba:所有行都编号(含空行)默认行为与
cat -n不同:nl默认跳过空行的编号(逻辑页概念),cat -n是每行都编。要"每行都编"用-ba(body all)。
二、格式控制
bash
nl -w 3 -s '. ' file # -w 编号宽度3,-s 编号后接 ". "
nl -v 100 -i 5 file # -v 起始号100,-i 步长5(100,105,110...)
nl -n rz file # -n rz:右对齐补零(01,02,...)
-w编号列宽、-s编号与正文的分隔、-v起始值、-i步长、-n rz补零对齐。比cat -n定制性强很多。
三、与 cat -n 的区别
bash
cat -n file # 每行都编,简单
nl file # 默认空行不编,可精细控制
nl -ba -n rz -w2 file # 等同 cat -n 的增强版想"简单每行加号"用
cat -n;想"跳过空行、补零、自定义步长/起始"用nl。nl还有逻辑页(-p、页眉页脚)高级功能,排版文档时用。
四、实战:生成带号清单
bash
nl -ba -s ') ' todo.txt # 输出 1) ... 2) ... 的编号清单把待办/步骤文件变成带编号清单,比手动维护序号省事。改内容后行号自动重排。
相关命令
一句话总结
nl = 加行号(cat -n 的专业版):默认空行不编号,-ba 才每行都编;-w 宽度、-s 分隔、-v 起始、-i 步长、-n rz 补零对齐;比 cat -n 定制性强。生成带号清单用 nl -ba -s ') '。与 cat -n(见cat)区别在空行处理与可控性。