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

相关推荐
GuokLiu6 分钟前
260502-Clawith-Docker安装过程
运维·docker·容器·claw
司南-704915 分钟前
Dense结构下的 大模型系统架构研究
服务器·人工智能·后端
.柒宇.38 分钟前
AI掘金头条项目部署实践指南
linux·运维·python·fastapi
budingxiaomoli39 分钟前
多机部署,负载均衡-LoadBalancer
运维·spring cloud·负载均衡
bzmK1DTbd1 小时前
Java游戏服务器:Netty框架的高并发网络通信
java·服务器·游戏
JesseDev1 小时前
Docker lnmp环境快速搭建开箱即用
运维·docker·容器
zhangrelay1 小时前
Ubuntu 18.04 经典 / 有趣 / 实用 APT 软件清单
linux·笔记·学习·ubuntu
金牛IT1 小时前
Gogs 轻量级 Git 服务器搭建与使用
运维·服务器·git
不做无法实现的梦~1 小时前
linux怎么使用正点原子无线dap烧录器
linux·运维·postgresql
coward911 小时前
Linux 内核 KGDB 以及内核驱动单串口调试笔记:telnet + agent-proxy + gdb-multiarch 实践
linux·单片机·嵌入式硬件