这个问题看上去很简单,我们从两方面进行讨论。
一是在vim编辑文件时如何显示行号,二是在命令行中执行命令后只显示前6行,且有行号。
一、vim编辑文件
在vim编辑器中可以查看、编辑文件内容。打开vim并正确操作,也十分方便。
vi是linux自带的文本编辑器,vim是改进后的优秀文本编辑器,功能更加强化。用好vim需要多加训练。
在vim中显示行号,分为临时显示和永久显示两种。
临时显示是配置文件中没有设置,而在内存中使用时临时更改一下显示方式,退出终端或关闭vim时还原文件设置状态。永久显示就是把设置行号代码写在配置文件中,长期有效,不受终端影响。
1.文件内容临时显示行号
使用vi或者vim 命令打开文件
不作进行操作,直接在命令模式下录入:,进入底行模式,接着输入 set nu命令,按Ente健确认,就会显示文件行号
:set 是设置的命令;nu 是number的简写。(可以录入number试一下,注意,不能录入常用的简写num)
2.文件内容永久显示行号
永久显示行号需要修改配置文件vimrc,其位置在家目录下,是隐藏文件。
vim ~/.vimrc
在文件的合适地方(建议在最后一行,不需要时可以再删除此行),新增以下内容:
set nu
保存退出该文件。执行命令source ~/.vimrc可以使文件马上生效。
再用vim打开文件时,就会自动显示行号。
二、命令行执行命令
命令行查看文件内容有许多常用命令,有显示行号的,也有不显示行号的。常用命令有:cat,tac,head,tail,more,less等。显示文件前6行且有行号,仅用一个常用命令解决不了!!
1.cat命令
查看文件的命令,第一想到的是cat,加上选项-n,可以显示行号!
但存在的问题是:cat是查看文件的全部行。当行很多,文件很大时,我们不容易看到前6行!
执行此命令后,会再次显示出命令提示符,也可以说是光标处于查看文件的最后一行后面。
下面的截图是移动光标后的结果。
2.head命令
我们第二个想到的命令是head。但加上选项-n不能显示行号,并且n后面要跟上显示的行数,如-n 6!
两个最常用的命令都不能满足要求。
3.命令组合
我们冷静一想,一个命令不能达到要求,两个命令组合肯定可以。
cat -n 文件名| head -6
head -6 文件名| cat –n
如果学习范围大,可能了解nl命令。这个命令不用加-n 选项,可以直接显示行号,与cat相同的是不能指定显示的行数,全部显示!
nl 文件名|head -6
考虑到grep的强大功能,肯定有人会想到搜索前6行显示,没错,cat,grep组合,完美达到要求:
cat -n 文件名|grep -A5 -w -E '^[ ]+1'
cat -n 文件名|grep -B 5 -w -E '^[ ]+6'
grep -n .文件名 | head -6
nl 和grep也可以达到要求
less -N 文件名 //显示所有行号(包括空行)
如果对seq、paste命令熟悉,还可以这样做:
seq 6 >t4;paste t4 /etc/passwd |head -6
t4 是为存放序号的文件取个名,由两个文件并列合并,达到我们的要求。(是不是显示多少行都没问题?!)
4.sed命令
由几个常用命令组合达到问题的解决,是十分快乐的事情。
如果不找出一个命令达到目的,有点不甘心。仔细找找,真有两个命令,一剑封喉!
先试试sed解决问题。
用sed显示文件前6行,简直是小菜一碟。
sed = 文件名|sed -n '1,6p'
结果出来了,有些不对劲!行号与行的内容不在一行!且只显示了3行内容
想办法,先把行号与行内容调整为一行,再显示前6行:
sed = 文件名 |sed 'N;s/\n/ /' |sed -n '1,6p'
完美成功!
5.awk命令
与sed命令相同,awk也是一个命令搞定,且不用管道命令
awk 'NR==1,NR==6 {print NR,$0}' 文件名
awk支持表达式NR<=6
6.for循环
显示文件前6行是for循环的强项,在内容左边加个行号信手拈来。
count=0
for line in 'cat 文件名'
do
let count++
echo $count $line
if [ $count –eq 6 ];then
break
fi
done文章来源:https://www.toymoban.com/news/detail-759883.html
文章来源地址https://www.toymoban.com/news/detail-759883.html
到了这里,关于Linux中查看文件前6行且显示行号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!