我们查看文件时,希望准确看到文件中的行所在的位置,即行号是多少。根据行号,我们可以快速选择几行内容、删除某行内容等。显示行号或为文件添加序号,十分简单,需要时可以随时添加或在不需要时快速删除。
而文件中总共有多少行,也是我们关心的事情。有多种手段查出、看到文件的总行数。
行号或总行数在文件编辑、查看、应用中,十分重要,本文作一讨论。
一、行
处理文件时,大多以行为基本单元,一行一行处理。
sed读取一行,处理一行,输出一行,清空。再重新读取下一行,循环处理。
awk以行为基础,又细分为字段。为了准确定位或描述,一般都是提供某行某字段的详细信息。
二、行号
文件中并没有行号这部分内容,如果文件内容中确有左边的编号,也是为了查看方便,额外添加。
1.文件中无数字序号
查看文件时,可自由选择是否显示行号。
在用vim编辑文件内容时,也可以自由设置是否显示行号。
编辑时显示的行号最终不会保存到文件中。
如果确实需要在文件中有数字来标记行,需要采取另外手段。vim编辑时自动为文件添加数字标记,难度较大!PS:vim中显示的行号不能保存在文件中。
2.文件中添加序号标记行
a.cat -n 文件名 > 新文件名
原文件没有行序号

我们可以在查看时添加-n选项,cat命令显示出行号

如重定向到一个新文件,这个新文件中就包含了行序号

b.两列文件合并一个新文件
paste命令合并两个文件
paste fi passwd1

3.删除文件含有的行标记
a.cut命令
cut -f2 文件名>新文件

b.awk命令
awk '{ print $2 }' 文件名

c.sed命令
sed -r 's/(.*)\s(.*)/\2/' passwd3

三、行数
1.查看单个文件行数
a.wc
wc -l 文件名
b.sed
sed -n '$=' 文件名

'$'是最后的标记,是结尾的标记
'='是sed中显示行号的选项
-n 取消全部显示(安静模式),仅显示模式匹配的代码行
c.awk
awk 'END{ print NR}' 文件名

NR环境变量:行数
d.vim
作为文件重要信息,vim查看文件内容时会额外标住总行数,仅供参考,不能引用。
vim + 文件名


vim 编辑文件时,在文件名前加上+ 选项,希望打开文件后光标处于最后一行
在下面的信息提示中,显示了文件名、文件总行数、总字符数
在下面的右侧,也显示了光标处于第64行第1个字符
e.ex
与vim类似,ex也有显示文件总行数的功能。
ex 文件名

底部信息显示与vim是一致的。
: =

在ex命令中,=是查看总行数
f.less nl cat
less命令,并在文件名前添加加上选项'-N':
less -N /etc/passwd 可以显示文件行号
nl /etc/passwd 也可以显示文件行号
cat –n /etc/passwd 也可以显示文件行号
这三个命令都是显示行号(最后一项就是总行数),但其他命令或程序不能引用这些行号或总行数,他们所显示的内容是供参考的,不命令的主要功能。
前面的都是单一命令或编辑器,相对好用一些。下面的是命令组合,也能达到目的。
g.cat wc
cat 文件名 | wc -l
cat -n 文件名
h.grep cat tall
grep -n "" 文件名 |cut -d: -f1|tall -1
多个命令组合
2.查看多个文件行数
多个文件名一起写,空格分隔
命令同上
部分方法只能查看总行数,部分命令包括每个文件的行数
3.编程查看普通文件的总行数
用命令处理常见问题,是首选之举。命令简单快捷,可见可改。只有需要复杂问题时,才用最科学最有效的编程方法。
下面是用while循环查看文件总行数的小程序。相对于while循环以行作为默认读取分隔符,for默认是空格作为读取内容的分隔符。用for循环时要修改IFS为"\n"。
cnt=0
while read line
do
echo $line >/dev/null
let cnt++
done <passwd3
echo $cnt
编程查看文件的总行数,比较简单。目录下所有文件的总行数也可以编程查看。基本上命令不能解决的,应用编程方法,都能解决。
322

被折叠的 条评论
为什么被折叠?



