你是不是一直用cat -n给文件加行号?好用,但功能相对固定! 在linux中,nl才是专业行号统计命令,支持自定义行号对齐、前置补零、自定义起始编号、更改分隔符、控制空行编号、精准匹配关键词编号等功能,对于运维排错、脚本编写、日志分析、文档整理都格外实用!
今天一篇把nl讲透、参数+实例 场景全覆盖,新手收藏就能用,老手也能查漏补缺!nl=number lines 专门给文件/输出加行号的命令。空行不显示行号
• 行号默认右对齐、占6个字符
• 行号和内容默认用tab分隔
2.空行也要编号(等同于cat -n)
-b a:all,所有行都编号(含空行)
三、核心参数
nl的强大之处在于其丰富的参数,可以精确控制行号的每一个细节。
1.行号编号规则(-b)
nl -b a #所有行编号(含空行)nl -b t #只给非空行编号(默认)nl -b n #不编号(只显示内容)
2.行号对齐方式(-n)
nl -n ln #左对齐nl -n rn #右对齐(默认,不补零)nl -n rz #右对齐,**左侧补零**(超常用)
3、行号宽度(-w)
nl -w 4 test.txt #行号占4个字符nl -w 3 -n rz test.txt #3位补零:001、002...
4.行号起始值(-v)
nl -v 100 test.txt #从100开始编号
5.行号与内容分隔符(-s)
nl -s ": " test.txt #用冒号+空格分隔nl -s "|" test.txt #用竖线分隔
6.行号增量(-i)
nl -i 5 test.txt #行号每次 +5:1、6、11...
四、常用组合命令
场景 1:日志/代码,空行也要编号(cat -n 平替)
场景 2:脚本输出,行号补零(整齐好看)
输出:
0001 #!/bin/bash0002 # 监控 80 端口已建立连接数,超过阈值告警00030004 PORT=800005 LIMIT=000060007 # 统计当前 80 端口 ESTABLISHED 连接数
场景 3:从指定行开始编号(排错/ 文档拆分)
nl -v 50 -s " → " test.txt
-s " → ":行号和内容之间用 → 分隔,美观清晰
场景 4:配合管道,给命令输出加行号
ps aux | nl #列出所有进程详细信息,并且给每一行自动加上行号ls -l /etc | nl -n rz -w 3 #查看/etc目录下所有文件的详细列表,并且右对齐,三位数编号
场景 5:只给匹配关键字的行编号(高级)
nl -b p'error' app.log #只给含error的行编号
只给包含 error 关键词的行 加行号并显示,其他行不显示、不加行号,备注:-b p与关键词中间不能加空格。
五、nl vs cat -n 怎么选?
• 简单看行号、临时用 → cat -n
• 写脚本、生成报告、日志排错、格式要整齐 → nl
nl优势:补零、对齐、起始值、分隔符、空行控制,全部可控!
六、总结
nl核心记忆点:
• -b a:空行也编号
• -n rz:右对齐补零(格式化神器)
• -w 数字:行号宽度
• -v 数字:起始行号
• -s 符号:自定义分隔符
日常运维、日志排查、脚本编写、文档整理,nl一个命令全搞定,比cat -n强太多!如果觉得文章对你的运维工作有帮助,记得点赞加关注。
#运维 #linux运维 #linux干货命令 #nl命令实用指南