上一篇
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适合复杂场景,
