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 在需要精细控制行号格式时特别有用,是处理文本文件时的一个强大工具。

相关推荐
百结2142 小时前
LVS 负载均衡群集
运维·负载均衡·lvs
卤炖阑尾炎2 小时前
从原理到实战:LVS 负载均衡集群全解析(OpenEuler 环境)
运维·负载均衡·lvs
咖喱o2 小时前
路由策略
linux·服务器·网络
南境十里·墨染春水2 小时前
linux学习进展 主函数的参数
linux·运维·学习
淮北4942 小时前
obsidian管理自己的计划
linux·学习·kanban·obsidian
YYYing.2 小时前
【Linux/C++网络篇(一) 】网络编程入门:一文搞懂 TCP/UDP 编程模型与 Socket 网络编程
linux·网络·c++·tcp/ip·ubuntu·udp
jiayong232 小时前
第 7 课:第三轮真实重构,拆出新增任务弹窗
服务器·前端·重构
ZGi.ai2 小时前
用Agent编排实现合同审查自动化:完整实现过程
运维·人工智能·自动化
魔都吴所谓2 小时前
【Ubuntu】22.04安装 CMake 3.24
linux·运维·ubuntu