当前位置: 首页 > news >正文

Linux 命令:nl

概述

Linux 中的nl命令是带行号打印文件内容的工具,比基础的cat -n功能更灵活,支持对行号格式、编号规则(如是否跳过空行)进行精细化配置,是日常查看文件、排版输出的常用命令。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、基本语法

nl[选项][文件1][文件2]...

无文件参数时,默认读取标准输入(可配合管道|使用)。

二、核心功能与默认行为

  1. 默认只为非空行添加行号,空行不编号(区别于cat -n,后者对所有行包括空行编号);
  2. 行号默认居右,左侧补空格,与文件内容之间有制表符分隔;
  3. 支持多文件拼接打印,行号连续递增。
简单示例
# 打印 test.txt 内容并为非空行加行号nltest.txt

test.txt内容为:

hello linux nl command test line

输出结果:

1 hello linux 2 nl command 3 test line

三、常用选项(重点)

nl的优势在于通过选项自定义行号规则,以下是高频实用选项,可组合使用:

选项作用示例
-b a所有行编号(包括空行),等效cat -nnl -b a test.txt
-b t仅为非空行编号(默认行为),可省略nl -b t test.txt
-n ln行号左对齐,无补空格nl -n ln test.txt
-n rn行号右对齐(默认),左侧补空格nl -n rn test.txt
-n rz行号右对齐,左侧补0填充(固定位数)nl -n rz test.txt
-w N指定行号的宽度(默认6位),N为数字nl -w 3 test.txt(行号占3位)
-s 符号指定行号与内容之间的分隔符(默认制表符\t`nl -s "
-v N指定行号的起始值(默认从1开始)nl -v 10 test.txt(从10开始编号)
-i N指定行号的递增步长(默认1)nl -i 2 test.txt(行号+2递增)

四、经典组合示例

结合选项实现精细化行号打印,覆盖日常大部分使用场景:

1. 所有行编号+行号补0+宽度3位
nl-b a -n rz -w3test.txt

输出(空行也编号,行号3位补0):

001 hello linux 002 nl command 003 004 test line
2. 行号左对齐+分隔符为|+从5开始编号
nl-nln-s"|"-v5test.txt

输出:

5|hello linux 6|nl command 7|test line
3. 配合管道使用(过滤后加行号)
# 查看/etc/passwd中含root的行,并用nl加行号greproot /etc/passwd|nl-b a -n rz -w2
4. 多文件连续编号打印
# 为file1.txt和file2.txt连续加行号,所有行编号nl-b a file1.txt file2.txt

五、与cat -n/cat -b的区别

nl是专门的行号打印工具,cat的行号功能是附属特性,三者核心差异如下,按需选择:

命令编号规则行号对齐自定义性适用场景
nl(默认)仅非空行右对齐(6位)高(宽度、分隔符、步长等)需精细化配置行号
cat -n所有行(含空行)右对齐(默认)低(无自定义选项)快速所有行加行号
cat -b仅非空行右对齐(默认)低(无自定义选项)快速非空行加行号

六、注意事项

  1. 若文件中有换行符异常(如Windows的\r\n),nl仍正常编号,可先用dos2unix转换;
  2. 行号宽度-w N若小于行号实际位数,会自动按实际位数显示,不会截断;
  3. 分隔符-s后若跟特殊符号(如\t\n),需用单/双引号包裹(如-s "\t-")。

总结

nl的核心价值是灵活的行号定制,日常使用中:

  • 快速需求用cat -n/cat -b即可;
  • 补0、自定义分隔符/起始号/步长、固定行号宽度时,优先用nl

最常用的高频组合:

  • 所有行编号+补0:nl -b a -n rz -w 3 文件名
  • 管道过滤后精细化加行号:命令 | nl -b a -s " " 文件名
http://www.cnnetsun.cn/news/817745.html

相关文章:

  • 亲测Glyph镜像效果!AI看文档处理24万字小说真实体验分享
  • Altium Designer教程入门:系统学习层叠设置与板框规划
  • 从0开始学OCR检测,cv_resnet18_ocr-detection让初学者更自信
  • HuggingFace与ModelScope对比:CAM++来源平台优劣
  • 企业客服质检新方案:用SenseVoiceSmall自动抓愤怒客户
  • 航天技术背书!双向液冷,保障高密度机柜稳定运行
  • 无需编程基础!用WebUI界面玩转cv_resnet18_ocr-detection模型
  • 上传音频就能看结果,SenseVoiceSmall让语音分析变简单
  • 把大模型塞进蓝牙耳机:1.46MB 的 Whisper-Lite 落地全记录
  • 全面讲解Arduino小车主控板引脚分配:新手实用参考
  • 电商客服模型微调实战:用Unsloth快速实现意图识别
  • unet image Face Fusion助力数字人制作:虚拟形象生成教程
  • 告别复杂环境配置!gpt-oss-20b-WEBUI一键启动方案
  • PyTorch-2.x-Universal-Dev-v1.0功能全测评,真实表现如何
  • 用麦橘超然做AI艺术创作,这些参数设置最出片
  • 树莓派自动化进阶技巧:用测试镜像实现无缝开机启动
  • SenseVoiceSmall部署教程:Linux下Docker镜像运行详细步骤
  • Unsloth电商评论挖掘:情感分析模型微调
  • 5分钟上手SenseVoiceSmall,多语言情感识别一键体验
  • BSHM人像抠图全流程演示,附完整操作截图
  • 5分钟部署verl:快速搭建多模态AI代理
  • Z-Image-Turbo测试脚本使用指南,快速验证效果
  • 如何在本地运行Z-Image-Turbo_UI界面?详细步骤来了
  • 超详细版:分立元件BJT放大电路设计流程
  • 亚马逊卖家最容易被“瞬间清零”的风险:不是差评,是账号安全
  • 5分钟上手Glyph视觉推理,单卡部署AI看图说话实战
  • YOLOv13 Python API使用教程,简单易上手
  • 16kHz采样率很重要!FSMN VAD音频预处理注意事项
  • BSHM镜像结果自动保存,再也不怕丢文件
  • 实战分享:Qwen-Image-2512在图像编辑中的实际应用