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

相关推荐
DolitD11 分钟前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算
jun_bai15 分钟前
Ecplise中发布项目到配置的tomcat中
java·服务器
芦柑46418 分钟前
画布和3D导演台工具:短剧分镜从素材整理到空间预演的完整链路
服务器·前端·数据库
闲云野鹤在人间27 分钟前
KVM虚拟化实战|CentOS‑Stream8 两种安装方式+模板制作+基础使用
linux·运维·服务器·centos
小张同学a.28 分钟前
Docker 容器实战 2—— docker 仓库
linux·运维·服务器·docker·容器
Android系统攻城狮40 分钟前
Linux PipeWire深度解析之pw_core_get_registry调用流程与实战(九十一)
linux·运维·服务器·音频进阶·pipewire音频实战进阶
其实防守也摸鱼40 分钟前
智能体推荐:精选 AI Agent 工具与实战指南
运维·开发语言·人工智能·学习·web安全·自动化
小义_1 小时前
JDK 深度解析
java·linux·开发语言·python·面试
邪修king1 小时前
Re:Linux 系统编程篇 (十二):进程篇(一)基础与 fork 系统调用全解
linux·运维·服务器
牢姐与蒯1 小时前
Linux进程(五).之环境变量
linux·运维·服务器·ubuntu