Answers:
采用 sed
用法
$ cat file
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
打印一行(5)
$ sed -n 5p file
Line 5
打印多行(5和8)
$ sed -n -e 5p -e 8p file
Line 5
Line 8
打印特定范围(5-8)
$ sed -n 5,8p file
Line 5
Line 6
Line 7
Line 8
用其他特定行打印范围(5-8和10)
$ sed -n -e 5,8p -e 10p file
Line 5
Line 6
Line 7
Line 8
Line 10
正如其他人向您展示的那样,无需使用cat -n
。其他程序将为您做到这一点。但是,如果确实需要解析输出cat -n
并仅显示特定的行(例如4-8、12和42),则可以执行以下操作:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42'
4 Line 4
5 Line 5
6 Line 6
7 Line 7
8 Line 8
12 Line 12
42 Line 42
在中awk
,$1
是第一个字段,因此此命令将打印所有第一字段为i)在4和8(含)之间或ii)12或iii)42之间的行。
如果您还想删除为cat -n
从文件中获取原始行而添加的字段,则可以执行以下操作:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42{sub(/^\s*[0-9]+\s*/,""); print}'
Line 4
Line 5
Line 6
Line 7
Line 8
Line 12
Line 42