1. wc命令介绍
wc命令来自于英文词组“Word count”的缩写,其功能是用于统计文件的字节数、单词数、行数等信息,并将统计结果输出到终端界面。
利用wc命令可以很快的计算出准确的单词数及行数,评估出文本的内容长度,要想了解一个文件,就可以使用这个命令。
wc 命令有很多坑,比如:
1. 为什么 -m 参数统计字符的时候,发现统计出来的字符数永远比实际的多一个?
2. 为什么 wc -w参数统计单词量,统计出来的结果比实际的少很多?
本文依次来给你揭秘
2. 语法格式及常用选项
关于wc常用的参数,我们还是使用 wc --help来查看:
[root@doc ~]# wc --help
此处出现的几个单词:
- character
maximum
sequence
specify
file
3. 参考案例
3.1 统计指定文件的行数,单词数,字节数
此时不需要加任何参数 Print newline, word, and byte counts for each FILE
[root@mufenggrow test]# wc passwd
44 89 2323 passwd
一共46行,89个单词数,2376个字节数
这里有个疑问: 重复的单词数,算一个还是多个。
[root@mufenggrow test]# echo test >> c.txt
[root@mufenggrow test]# echo test >> c.txt
[root@mufenggrow test]# cat c.txt
test
test
[root@mufenggrow test]# wc c.txt
2 2 10 c.txt
可以看到,这里显示的两行,两个单词,10个字符。
但当我们统计/etc/passwd的时候,你会发现wc统计出来的单词数和实际单词数不想等,这是因为:
wc命令默认单词和单词的区别是以空格为标准的,也就是说只有空格隔开的两个单词,它才会认为是两个单词,要是没有隔开,它就认为是一个单词,所以结果和你预想的不一样!
3.2 统计字节数
-c 参数,主要用来统计字节数,我们看下如下案例:
## 登录到/etc/init.d。查看是否为符号链接
[root@master ~]# wc -w docker-ce.repo
93 docker-ce.repo
前面的93就是统计出来的字节数
3.3 只统计单词数
-w用于统计单词数,这里统计的与上面的一样,单词之间需要以空格为分隔符。
root@mufenggrow init.d]# pwd
[root@master ~]# wc -w docker-ce.repo
93 docker-ce.repo
3.4 统计字符数
-m参数用于统计字符数:
[root@mufenggrow test]# touch a.txt
[root@mufenggrow test]# echo "aaa c"> a.txt
[root@mufenggrow test]# cat a.txt
aaa c
[root@mufenggrow test]# wc -m a.txt
6 a.txt
这里有个疑问: 文本中我们一共输入了5个字符,统计出来为什么是6个字符?
我们其实应该以计算机的视角来查看到底有几个字符:
[root@mufenggrow test]# cat -A a.txt
aaa c$
当我们使用cat -A参数,发现,的确是六个字符,因为在C后面有个 $
3.4 统计行数
只统计行数可以使用-l参数, 注意这里的-l是大写L的小写字母,千万不要错当成I(小写i的大写)
这里可以用三种方法来统计行数:
[root@mufenggrow test]# wc -l passwd
44 passwd
[root@mufenggrow test]# wc -l < passwd
44
[root@mufenggrow test]# cat passwd |wc -l
44
[root@mufenggrow test]#
3.5 统计最长的行的长度
这里需要使用的是-L参数,-L 可以输出最长的行的长度
[mufeng@localhost ~] wc -L /etc/passwd
99 /etc/passwd