在linux下cat命令可以查看文件内容,不过有时候我们需要在前面加上行号,看起来更方便,nl命令就有这个功能。

比如查看一个sh脚本:


$ cat print-printf.sh 
#!/bin/bash

echo $0 $1
if [ $1x == 1x ]; then
echo "printf"
awk '{for(i=1;i<5;i++){printf($i"\t")}}' test.txt
else
echo "print"
awk '{for(i=1;i<5;i++){print($i"\t")}}' test.txt
fi
$ nl -n ln print-printf.sh
1 #!/bin/bash

2 echo $0 $1
3 if [ $1x == 1x ]; then
4 echo "printf"
5 awk '{for(i=1;i<5;i++){printf($i"\t")}}' test.txt
6 else
7 echo "print"
8 awk '{for(i=1;i<5;i++){print($i"\t")}}' test.txt
9 fi


在shell终端输入nl --help查看其他的选项:

$ nl --help
用法:nl [选项]... [文件]...
Write each FILE to standard output, with line numbers added.

如果没有指定文件,或者文件为"-",则从标准输入读取。

必选参数对长短选项同时适用。
-b, --body-numbering=样式 使用指定样式编号文件的正文行目
-d, --section-delimiter=CC 使用指定的CC 分割逻辑页数
-f, --footer-numbering=样式 使用指定样式编号文件的页脚行目
-h, --header-numbering=样式 使用指定样式编号文件的页眉行目
-i, --page-increment=数值 设置每一行遍历后的自动递增值
-l, --join-blank-lines=数值 设置数值为多少的若干空行被视作一行
-n, --number-format=格式 根据指定格式插入行号
-p, --no-renumber 在逻辑页数切换时不将行号值复位
-s, --number-separator=字符串 可能的话在行号后添加字符串
-v, --starting-line-number=数字 每个逻辑页上的第一行的行号
-w, --number-width=数字 为行号使用指定的栏数
--help 显示此帮助信息并退出
--version 显示版本信息并退出

默认的选项设置是-v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn。CC 是用于分隔
逻辑页数的两个分界符,其中缺失的第二个字符暗含了":",如果您要指定"\",
请输入"\\"。可用的样式如下:

a 对所有行编号
t 对非空行编号
n 不编行号
pBRE 只对符合正则表达式BRE 的行编号

FORMAT 是下列之一:

ln 左对齐,空格不用0 填充
rn 右对齐,空格不用0 填充
rz 右对齐,空格用0 填充


GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告nl 的翻译错误
Full documentation at: <http://www.gnu.org/software/coreutils/nl>
or available locally via: info '(coreutils) nl invocation'