Linux 【03-nl命令超详细教程】

Linux nl 命令 超详细教程

nl = number lines ,作用:给文件内容加上行号 ,比 cat -n 功能更丰富,支持自定义行号样式、编号规则、分隔符等。

一、基础语法

bash 复制代码
nl [选项] 文件名
# 也可配合管道使用
cat 文件名 | nl

二、默认行为(无参数)

默认规则:

  1. 空白行不编号
  2. 行号右对齐,占 6 个字符宽度
  3. 行号和内容之间用 Tab 分隔

示例:

bash 复制代码
# 新建测试文件
cat > test.txt << EOF
第一行

第二行

第三行
EOF

# 直接 nl
nl test.txt

输出:

复制代码
     1	第一行

     2	第二行

     3	第三行

空行无行号。


三、常用核心选项(分类讲解)

1. 控制「空白行是否编号」-b(最常用)

格式:-b 模式

模式 说明
a 所有行都编号(包括空行)
t 仅非空行编号(默认
n 所有行都不编号
pRE 只对匹配正则 RE 的行编号
示例
bash 复制代码
# 所有行(含空行)都编号
nl -b a test.txt

# 只给非空行编号(默认效果)
nl -b t test.txt

# 全行不显示行号,只输出内容
nl -b n test.txt

2. 控制「行号对齐方式」-l 不常用,重点 -n

格式:-n 格式,控制行号本身的显示样式

格式 说明
ln 行号左对齐,不补前导零
rn 行号右对齐 ,不补前导零(默认
rz 行号右对齐,补前导零(零填充)
示例
bash 复制代码
# 行号左对齐
nl -n ln test.txt

# 行号右对齐(默认)
nl -n rn test.txt

# 行号右对齐 + 补 0(零填充)
nl -n rz test.txt

3. 自定义「行号与内容的分隔符」-s

格式:-s "分隔符"

默认分隔符是 Tab 制表符,可改成空格、符号等。

示例
bash 复制代码
# 行号和内容之间用 单个空格 分隔
nl -s " " test.txt

# 用 冒号 分隔
nl -s ":" test.txt

# 组合:全行编号 + 空格分隔
nl -b a -s " " test.txt

4. 设置「行号占用宽度」-w

格式:-w 数字,指定行号列总字符宽度 ,默认 6

示例
bash 复制代码
# 行号占 3 个字符宽度
nl -w 3 test.txt

# 宽度4 + 零填充
nl -w 4 -n rz test.txt

5. 设置「起始行号」-v

格式:-v 数字,指定第一行的起始编号 ,默认从 1 开始。

示例
bash 复制代码
# 行号从 100 开始编号
nl -v 100 test.txt

# 从 5 开始,所有行编号
nl -v 5 -b a test.txt

6. 逻辑分页/分组编号 --header --body --footer(高级用法)

nl 支持把文件分为 页眉(header)、正文(body)、页脚(footer) 三部分,分别控制编号规则,用分页符分隔:

  • 分页符:\ + 回车(输入 \ 然后回车)

参数简写:

  • -ha:页眉所有行编号
  • -hb:正文所有行编号(默认正文规则)
  • -hf:页脚所有行编号
示例(分页编号)
bash 复制代码
# 页眉、正文、页脚 全部行都编号
nl -ha -hb -hf test.txt

四、高频组合命令(工作常用)

1. 全行编号(含空行)+ 空格分隔

bash 复制代码
nl -b a -s " " test.txt

2. 行号从零填充、宽度4、从1开始

bash 复制代码
nl -w 4 -n rz test.txt

3. 行号左对齐 + 全量编号

bash 复制代码
nl -b a -n ln test.txt

4. 行号从 10 开始,所有行编号

bash 复制代码
nl -v 10 -b a test.txt

5. 管道结合使用(查看命令输出并加行号)

bash 复制代码
# 查看目录并加行号
ls -l | nl -b a

# 查看配置文件并编号
cat /etc/profile | nl

五、nl vs cat -n 区别

  1. cat -n强制所有行编号,无法跳过空行、无法改对齐/分隔符,功能简单。
  2. nl高度可定制,空行开关、对齐、零填充、起始号、分隔符全都能改,专业行号工具。

简单总结:

  • 临时看行号 → cat -n
  • 需要定制行号样式、过滤空行 → 用 nl

六、速查备忘录

复制代码
-b a      所有行编号
-b t      仅非空行编号(默认)
-n ln     行号左对齐
-n rn     行号右对齐(默认)
-n rz     行号右对齐+补零
-s "xxx"  设置分隔符
-w N      设置行号宽度
-v N      设置起始行号
相关推荐
未济15 小时前
linux 配置环境变量
linux
傲世仙尊15 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
_艾伦 耶格尔.17 小时前
进程间通信
linux
Liuqy-0518 小时前
Linux IO编程——静态库、动态库
linux
彧azz18 小时前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅19 小时前
linux(8) 软硬链接
linux·运维·服务器
AIgorithmGEEK19 小时前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid
琥珀色糖19 小时前
SimlpeHttp
linux·服务器
qeen8720 小时前
【Linux】操作系统之进程介绍(二)
linux·笔记·学习·进程
Zenova EdgeOS20 小时前
Linux ss 工业边缘网络分析实战
linux·python·边缘计算·工业网关