上一篇                     
               
			  linux如何在文件加行号
- Linux
- 2025-07-29
- 4679
 Linux 中,可以使用 
 
 
cat -n 或 
 nl 命令为文件添加行号。
Linux在文件中添加行号的方法及详细操作
在Linux系统中,为文件添加行号有多种方法,以下是几种常见且实用的方式,包括命令行工具和文本编辑器的操作,以下内容将详细介绍每种方法的使用场景、命令格式及示例。
使用nl命令
 
nl是Linux中专门用于为文件添加行号的命令,功能丰富且灵活。
| 选项 | 说明 | 
|---|---|
| -b | 设置行号显示的行类型( a:所有行,t:非空行,n:不显示行号)。 | 
| -n | 设置行号的起始值(例如 -n 100从100开始)。 | 
| -i | 设置行号递增间隔(例如 -i 2每隔两行递增一次)。 | 
| -w | 设置行号字段的宽度(例如 -w 5宽度为5个字符)。 | 
| -s | 设置行号与内容之间的分隔符(例如 -s "."用点分隔)。 | 
| -v | 设置行号的起始值(例如 -v 150从150开始)。 | 
示例:
# 基本用法:为文件添加行号并输出到终端 nl file.txt # 仅对非空行添加行号 nl -b t file.txt # 设置行号从100开始,宽度为5,分隔符为点 nl -v 100 -w 5 -s "." file.txt > numbered_file.txt
注意事项:
- nl默认输出到终端,如需保存结果,需使用重定向(- >)将输出写入新文件。
- 修改原文件需结合管道或编辑命令(如vim)。
使用cat -n命令
 
cat命令结合-n选项可快速显示文件内容并添加行号。
| 选项 | 说明 | 
|---|---|
| -n | 显示行号(默认从1开始)。 | 
示例:
# 显示文件内容并添加行号 cat -n file.txt # 将结果保存到新文件 cat -n file.txt > numbered_file.txt
注意事项:

- cat -n不会修改原文件,仅输出到终端或重定向到新文件,之间用- ^I(制表符)分隔。
使用awk命令
 
awk通过内置变量NR(行号)可实现灵活的行号添加。
| 命令 | 说明 | 
|---|---|
| awk '{print NR, $0}' filename | 打印行号和内容,默认用空格分隔。 | 
示例:
# 基本用法:添加行号并输出到终端
awk '{print NR, $0}' file.txt
# 自定义分隔符为制表符,并保存到新文件
awk '{print NR "t" $0}' file.txt > numbered_file.txt 
扩展用法:
- 结合OFS设置字段分隔符:awk 'BEGIN {OFS="t"} {print NR, $0}' file.txt
- 过滤特定行(如仅奇数行): awk 'NR % 2 == 1 {print NR, $0}' file.txt
使用sed命令
 
sed可通过替换和格式化为文件添加行号。
示例:

# 添加行号并用制表符分隔 sed = file.txt | sed 'N;s/n/t/' # 保存到新文件(需分步执行) sed = file.txt | sed 'N;s/n/t/' > numbered_file.txt
解释:
- sed = file.txt:输出文件内容并显示行号(行号与内容分两行)。
- sed 'N;s/n/t/':将换行符替换为制表符,使行号与内容在同一行。
注意事项:
- sed命令不会直接修改原文件,需通过管道或重定向保存结果。
使用vim编辑器
 
在vim中,可通过设置显示行号或直接修改文件内容。
| 命令 | 说明 | 
|---|---|
| :set number | 在编辑器左侧显示行号(仅显示,不修改文件)。 | 
| :%!nl | 通过管道调用 nl命令,将行号永久写入文件。 | 
步骤:
- 打开文件: vim file.txt 
- 显示行号(不修改文件): :set number 
- 永久添加行号并保存: :%!nl :wq 
注意事项:

- :set number仅在当前编辑会话中生效,退出后失效。
- :%!nl会覆盖原文件内容,建议先备份。
其他方法
- grep -n:搜索关键词并显示匹配行的行号。- grep -n "pattern" file.txt 
- grep -nr:递归搜索目录并显示行号。
FAQs
问题1:如何仅为非空行添加行号?
解答:
使用nl -b t filename或awk '/./ {print NR, $0}' filename。
- nl -b t跳过空行。
- awk '/./检查行是否非空,再打印行号和内容。
问题2:如何将行号右对齐并指定宽度?
解答:
使用nl -n rz -w 宽度 filename。
nl -n rz -w 4 file.txt
- -n rz:行号右对齐,位数自动调整。
- -w 4:行号字段宽度为4个字符。
方法可根据需求选择,nl和awk适合复杂场景,
 
  
			