不知道有没有注意过,使用-A -B -C 选项,后面加上-n后显示行号的时候,有时会显示冒号“:”,也有会显示减号“-”
例如下面的例子:
## 文件的全部内容
$ cat -n test.txt
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 f
7 7 g
8 8 h
## 执行-A,显示grep之后的三行内容,并显示行号
$ grep 2 test.txt -A3 -n
2:2 b
3-3 c
4-4 d
5-5 e
## 执行-C,显示grep之后前后5行的内容
$ grep 5 test.txt -C3 -n
2-2 b
3-3 c
4-4 d
5:5 e
6-6 f
7-7 g
8-8 h
查看官方文档后,介绍是这样的:
以grep 2 test.txt -A3 -n输出为例
grep 命令中的 -A 参数是指在匹配到的行后扩展显示指定数量的行。在您的命令中,-A3 表示在匹配到的行后显示3行文本。
冒号和减号都用来表示行号和文本之间的分隔符。冒号(:)用在原始行号之后,表示其后面的行是通过 -A 参数扩展显示出来的。减号(-)则用在被扩展行的行号之前,表示这行是扩展显示出来的行。
因此,2:2 表示原始文件的第2行,3-3 表示第3行被 -A3 扩展显示出来的,4-4 表示第4行被扩展显示出来的,以此类推。
翻译成白话是:冒号就是grep出来的真实行号,例如grep 2 test.txt -n显示的就是2这个关键字的行号,用冒号表示,代表真实的
减号是已冒号为基础,已冒号为原始行号,衍生出来的新的行号,不一定是与真实的相同。