Linux【2】-管理文件-4-wc

本文的内容是 Linux 的 wc 命令,这个名字很好记,因为什么,你懂的,对,就是 word count,和我想的一样!

这个命令的功能也同样很好记,因为它功能很有限。wc 命令的主要作用就是计算一个文件中的字数、单词数和字节数。我们通过示例来了解一下。

一、实验素材

我们为此准备了几个文件素材,它们的内容分别是:

#通过cat查看文件, 其中两行内容, 中英文混合
[root@roclinux ~]# cat my001.txt
hello world
你好 世界
 
#文件的编码信息如下
[root@roclinux ~]$ file my001.txt
my001.txt: ISO-8859 text
 
#通过sed可以看到按字节显示的内容, 也包括控制符
[root@roclinux ~]# sed -n l my001.txt
hello world$
\304\343\272\303 \312\300\275\347$

由此可以很清晰地看出,在 my001.txt 文件中:

  • 第一行:有 12 个英文半角字符,其中包括肉眼可以看见的“hello world”共 11 个字符,还有最后隐藏着的行尾符($)。
  • 第二行:有 6 个字符,肉眼可以看见的“你好世界”,以及最后隐藏着的行尾符($)。
  • 论字节数(byte)的话,第一行包括 12 个字节,第二行包括 10 个字节,共 22 个字节。
  • 论字符数(char)的话,第一行 12 个字符,第二行 6 个字符,共 18 个字符。
  • 论词数(word)的话,第一行 2 个词“hello”和“world”,第二行 2 个词“你好”和“世界”,共 4 个词。
  • 论行数(line),本文件共有 2 行。

小提示:

如果你做试验的文件的编码格式是 UTF-8 或其他,则可能会影响统计结果,因为不同编码格式中汉字所占的字节数各不相同。

二、基本用法演示

我们就针对这个素材文件,来展示 wc 命令的基本作用:

#-c选项表示以字节(byte)来计数
[root@roclinux ~]# wc -c my001.txt
22 my001.txt
 
#-m选项表示以字符(char)来计数
[root@roclinux ~]# wc -m my001.txt
18 my001.txt
 
#-l选项表示以行(line)来计数
[root@roclinux ~]# wc -l my001.txt
2 my001.txt
 
#-w选项表示以词(word)来计数
[root@roclinux ~]# wc -w my001.txt
4 my001.txt

经过这几个示例,相信大家已经基本掌握了 wc 的用法以及它计数的原理了。接下来,我们看一些有关 wc 命令值得了解和关注的地方。

2.1 我想找出长度最长的行

wc 命令有一个-L选项,可以显示一个文件中最长行的长度。

这里所谓的最长行,是按照字节数来计算的,而非字符数(char)或词数(word),同时要注意的是,在计算最长行的长度时,是不会将行尾符($)计算在内的。

[root@roclinux ~]# wc -L my001.txt
11 my001.txt

2.2 有关淘气的制表符

我们搞了一个新的文件素材,大家看看,其中包括了一个制表符:

#文件中包含了hello world
[roc@roclinux ~]$ cat my002.txt
hello   world
 
#两个单词之间包含了一个制表符\t
[roc@roclinux ~]$ sed -n l my002.txt
hello\tworld$

这个制表符比较特殊,需要分情况来说明一下:

当用 -c 时,你会发现其实制表符也没什么特殊的,只是算作一个字符(\t),因为它的确就只是一个字符而已。 而当使用 -w 时,制表符和空格没什么两样,都是作为字的间隔来看待。 当使用 -m 时,从视觉上,你以为 hello 和 world 之间是有 3 个空格,其实 wc 只把它算作一个字符,即 Tab 制表符。

我们来看一下实际的统计结果:

#再看一下文件内容
[roc@roclinux ~]$ cat my002.txt
hello   world
 
#统计字节数
[roc@roclinux ~]$ wc -c my002.txt
12 my002.txt
 
#统计字符数
[roc@roclinux ~]$ wc -m my002.txt
12 my002.txt
 
#统计词数
[roc@roclinux ~]$ wc -w my002.txt
2 my002.txt
让 wc 输出全部内容
如果你直接执行 wc 命令,不加任何选项,则会显示:
#文件内容
[roc@roclinux ~]$ cat my001.txt
hello world
你好 世界
 
#输出信息依次是:行数 词数 字节数 文件名称。
[roc@roclinux ~]$ wc my001.txt
2  4 22 my001.txt

可见,当不使用任何选项来运行 wc 命令时,wc 命令输出了四个字段,分别表示: 行数 词数 字节数 文件名称

好了,本文到这里就结束了,有时间的话,可以用 wc 命令统计一下你代码的词数和字符数,然后晒出来大家比一比哦!

参考资料

这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn