目录
内容来源:
GUN : Coreutils - GNU core utilities
busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客
【GUN】【nl】指令介绍
nl:行数和写文件
nl 将每个文件(`-`表示标准输入),或如果没有给出标准输入,则将标准输入写入标准输出,并在部分或全部行中添加行号。
简介:
nl [option]... [file]...
nl将其输入分解为(逻辑上的)页面部分;默认情况下,每个逻辑页节的行号都重置为1。nl将所有输入文件视为一个文档;它不会重置行号或文件之间的逻辑页。
一个逻辑页面由三部分组成:页眉、正文和页脚。任何部分都可以是空的。每一个都可以以不同的风格编号。
在输入文件中,逻辑页各部分的开头,由一行指定,其中包含以下分隔符字符串中的一个:
‘\:\:\:’ 头部开始;
‘\:\:’ body开始;
‘\:’ 页脚的开始。
由'\'和':'组成这些字符串的字符可以通过选项改变(见下文),但每个字符串的模式不能改变。
在输出时,区段分隔符被替换为空行。在输入文件中,位于第一个section定界符字符串之前的任何文本都被认为是body部分的一部分,因此nl将不包含section定界符的文件视为单个body部分。
该程序接受以下选项。参见第2章[常见选项],第2页。
‘-b style’
‘--body-numbering=style’
为每个逻辑页的正文部分中的行选择编号样式。当某一行没有编号时,当前的行号不会递增,但行号分隔符仍然位于该行的前面。样式如下:
‘a’ 所有行都编号,
‘t’ 只编号非空行(默认为 body),
‘n’ 不编号(默认为 header 和 footer),
‘pbre’ 编号仅包含匹配基本正则表达式bre的行。参见GNU Grep手册中的“正则表达式”一节。
‘-d cd’
‘--section-delimiter=cd’
将区段分隔符设置为cd;
默认值是'\:'。如果只给出了c,第二个仍然是`:`。
作为一个GNU扩展,可以指定两个以上的字符,如果cd是空的(-d ''),则禁用节匹配。(记住,要用引号或额外的反斜杠保护 '\' 或其他元字符不受shell扩展的影响。)
‘-f style’
‘--footer-numbering=style’
类似于 --body-numbering。
‘-h style’
‘--header-numbering=style’
类似于 --body-numbering。
‘-i number’
‘--line-increment=number’
按数字增加行号(默认为1)。数字可以是负数,也可以是减数。
‘-l number’
‘--join-blank-lines=number’
将number(默认为1)连续的空行作为逻辑上的一行编号,只对最后一行编号。如果出现的连续空行少于数字,就不要给它们编号。空行是指不包含任何字符,甚至不包含空格或制表符的行。
‘-n format’
‘--number-format=format’
选择行编号格式(默认为rn):
‘ln’ 左对齐,没有前导零;
‘rn’ 右对齐,没有前导零;
‘rz’ 右对齐,前导为零。
‘-p’
‘--no-renumber’
不要重置逻辑页起始处的行号。
‘-s string’
‘--number-separator=string’
用字符串(默认是制表符)将行号和输出的文本行分开。
‘-v number’
‘--starting-line-number=number’
将每个逻辑页的初始行号设置为序号(默认为1)。起始行号可以为负数。
‘-w number’
‘--number-width=number’
使用设置的字节长度(默认为6)。
退出状态为零表示成功,非零值表示失败。
【linux】【nl】指令介绍
root@localhost ~]# nl --help
用法:nl [选项]... [文件]...
Write each FILE to standard output, with line numbers added.
如果没有指定文件,或者文件为"-",则从标准输入读取。
必选参数对长短选项同时适用。
-b, --body-numbering=STYLE use STYLE for numbering body lines
-d, --section-delimiter=CC use CC for logical page delimiters
-f, --footer-numbering=STYLE use STYLE for numbering footer lines
-h, --header-numbering=STYLE use STYLE for numbering header lines
-i, --line-increment=NUMBER line number increment at each line
-l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as one
-n, --number-format=FORMAT insert line numbers according to FORMAT
-p, --no-renumber do not reset line numbers for each section
-s, --number-separator=STRING add STRING after (possible) line number
-v, --starting-line-number=NUMBER first line number for each section
-w, --number-width=NUMBER use NUMBER columns for line numbers
--help 显示此帮助信息并退出
--version 显示版本信息并退出
Default options are: -bt -d'\:' -fn -hn -i1 -l1 -n'rn' -s<TAB> -v1 -w6
CC are two delimiter characters used to construct logical page delimiters;
a missing second character implies ':'.
STYLE is one of:
a number all lines
t number only nonempty lines
n number no lines
pBRE number only lines that contain a match for the basic regular
expression, BRE
FORMAT is one of:
ln left justified, no leading zeros
rn right justified, no leading zeros
rz right justified, leading zeros
GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 nl 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/nl>
或者在本地使用:info '(coreutils) nl invocation'
能识别的文件格式 - 务必先看
1、标准分隔符
格式如下:
\:\:\: 与 \:\: 之间的为每一段的头
\:\: 与 \: 之间的为每一段的body,即身子
\: 与 \:\:\: 之间的为每一段的结束
周期循环,组成整个文件
PS: 分隔符只能单独占用一行,如果与内容写在同一行,会无法识别
示例:分隔符单独写一行 - 可正确识别分隔符
正确识别,正确输出内容
示例:分隔符与其他内容混合在一起 - 无法正确识别
没有识别到分隔符,错误地输出了内容
2、可以设置不同的分隔符
分隔符字符本身是可以变换的,默认是 \: ,可以通过 -d 选项设置其他分隔符,但是格式不能变,例如:
使用示例:
1、输出文件内容-默认输出行号
指令: nl test1.txt
第一组分隔符为第一段,文件行号只记录body内的,行号从0递增
第二组分隔符为第二段,文件行号只记录body内的,行号从0递增,默认不输出空行
2、输出文件内容 - 行都有行号
指令: nl -b a test1.txt
3、输出文件内容 - 非空行有行号
指令: nl -b t test1.txt
4、输出文件内容 - 不输出行号
指令: nl -b n test1.txt
5、输出文件内容 - 修改标准分隔符
指令: nl -d "ab" test2.txt
6、输出文件内容 - 行号递增指定间隔
指令: nl -b a -i 2 test1.txt
增加 -b a 选项是为了能更好的看到行号递增
7、输出文件内容 - 行号也是可以换位置的
行号显示靠左
指令:nl -b a -n ln test1.txt
行号显示靠右
指令: nl -b a -n rn test1.txt
行号显示前面补0
指令:nl -b a -n rz test1.txt
8、输出文件内容 - 行号也是可以设置宽度显示的
指令:nl -b a -n rz -w 10 test1.txt
选项 -b a -n rz 是为了更好的显示出宽度变化,设置行号宽度显示为10个字符
9、输出文件内容 - 初始行号也是可以修改的
指令: nl -b a -n rz -v 19 test1.txt
选项 -b a -n rz 是为了更好的展现变化
初始行号修改为19
10、输出文件 - 给行号和内容之间增加指定的字符
指令: nl -b a -n ln -s "line " test1.txt
-s后面的字符串多加几个空格视为了更直观地显示
常用组合指令:
很少用,所以就这样吧