菜鸟笔记
提升您的技术认知

Shell中如何获取文件指定行

比如要获取/etc/passwd文件, 要获取其第6-10行,并显示每行的行号。总结一下,方法有很多,行号的显示可以借助cat -n参数,或者sed =来显示。 小结一下,可以有以下方法来获取。 

# 1). -n显示行号,tail -n +6显示第6行之后的行,结合head -n 5,获取前面5行,刚好6-10
$ cat -n /etc/passwd | tail -n +6 | head -n 5   

# 2). 先用head -n 10来获取前10行,再结合tail -n 5获取后面5行,刚好也是6-10行
$ cat -n /etc/passwd | head -n 10 | tail -n 5  

# 3). cat -n来显示行号,再用awk中$1来判断行号范围
$ cat -n /etc/passwd | awk '($1 > 1 && $1 < 11){print $0}' 

# 4). 借助于6,10p来打印第6行到第10行
$ cat -n /etc/passwd | sed -n '6,10p'

# 5). =打印行号,使用N;来获取下一行,再用\t来替换换行符,最后使用6,10p来获取
$ sed = /etc/passwd | sed 'N;s/\n/\t/' | sed -n '6,10p'