Linux 的 nl 命令

nl 是 Linux 系统中一个实用的命令行工具,用于为输入文本添加行号。它属于 GNU coreutils 工具集的一部分,默认安装在大多数 Linux 发行版中。

基本功能

nl 命令的主要功能是为文本文件或标准输入的内容添加行号。与简单的 cat -n 不同,nl 提供了更丰富的行号格式化选项。

基本语法

复制代码
nl [选项]... [文件]...

如果未指定文件或指定为 -,则从标准输入读取数据。

常用选项

  1. -b 样式:指定行号样式

    • a:为所有行编号(默认)
    • t:仅为非空行编号
    • n:不编号
  2. -v 起始值:设置行号的起始值(默认为1)

  3. -i 增量:设置行号增量(默认为1)

  4. -w 宽度:设置行号字段宽度(默认为6)

  5. -s 分隔符:设置行号与文本间的分隔符(默认为制表符)

  6. -n 格式:设置行号格式

    • ln:左对齐,无前导零
    • rn:右对齐,无前导零(默认)
    • rz:右对齐,有前导零

使用示例

基本使用

bash 复制代码
$ nl example.txt
     1  第一行内容
     2  第二行内容
     3  第三行内容

从管道读取

bash 复制代码
$ cat example.txt | nl

只对非空行编号

bash 复制代码
$ nl -b t example.txt

自定义行号格式

bash 复制代码
$ nl -n rz -w 3 -s ": " example.txt
001: 第一行内容
002: 第二行内容
003: 第三行内容

设置起始行号

bash 复制代码
$ nl -v 10 example.txt
    10  第一行内容
    11  第二行内容
    12  第三行内容

高级用法

nl 支持逻辑页面的概念,可以识别文件中的分节标记(默认是 \: 开头的行为分节标记)。可以使用 -h 和 -f 选项分别设置头和脚注的编号样式。

bash 复制代码
$ nl -h a -f a -b t sectioned_file.txt

应用场景

  1. 日志文件分析:为日志文件添加行号便于引用特定行
  2. 代码审查:为代码片段添加行号便于讨论
  3. 文档处理:为文本添加结构化编号
  4. 脚本调试:为脚本输出添加行号便于定位问题

与其他命令对比

  1. cat -n:简单地为所有行添加行号,功能不如 nl 丰富
  2. pr -n:主要用于格式化打印,行号功能是附加的
  3. awk '{print NR,$0}':使用 awk 实现类似功能,但语法更复杂

nl 在需要精细控制行号格式时特别有用,是处理文本文件时的一个强大工具。

相关推荐
何中应1 分钟前
Grafana如何共享面板
运维·grafana·可观测
科创致远6 分钟前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
承渊政道13 分钟前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
重生之小比特25 分钟前
【Linux系统】17 库制作与原理(下)
linux·运维·服务器
weixin_4509072830 分钟前
[ZYNQ Linux] VCU使用
linux·zynq
acd1200936 分钟前
Nginx 反向代理的缓冲区坑:后端响应大时接口偶发 502
java·运维·nginx
程序员清风40 分钟前
AI 编程助手的权限边界:文件、命令、密钥与人工确认
运维·服务器·网络
wacsii44 分钟前
【Linux进程(二)】深入 Linux 内核:进程状态切换与底层数据结构的秘密
linux·服务器
R&L_201810011 小时前
LINUX CPU 热点分析
linux
CodeYp20192 小时前
第6讲:Ext 系列文件系统
linux·文件系统·ext