一、com
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。但它只能统计数量,至于文件大小,不能统计。
其主要功能是统计指定文件中的字节数、字数、行数、总统计数,并将统计结果显示输出。
可以把标准输入和其他命令的输出作为输入。
二、syntax
wc [选项] 文件 …
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息并退出
–version 显示版本信息并退出
三、usage
1.标准输入
直接输入wc,就进入交互页面,用CTRL+D提交
linux中关于标准输入中涉及EOF的处理方式
标准输入设备是行缓冲的,当从键盘上输入字符串,输入的字符串会首先被送到输入缓冲区中存储,当铵下回车键后才会去检测输入缓冲区中是否有了数据(也就是说fgets,fgetchar等函数这个时候才去从缓冲区中读数据).我们可以把输入缓冲区理解为文件,那么对于这个文件来说,它也有结束的时候,输入函数在从缓冲区中读文件的时候也会去检测有没有流结束标志(EOF),这种标志是通过Ctrl+d产生的,在按下Ctrl+d之后立即响应.如果在此之前有输入字符,则Ctrl+d就相当于回车,即把输入的内容送到输入缓冲区供读取使用,此时Ctrl+d不作为流结束符使用,下次按下的Ctrl+d则作为流结束标志.如果按下Ctrl+d之前没有输入任何数据,刚Ctrl+d作为流结束标志,表示标准输入设备对应的文件结束.
那么,如果真的想输入Ctrl-D怎么办?这时必须先按下Ctrl-V,然后就可以输入Ctrl-D,系统就不会认为这是EOF信号.Ctrl-V表示按"字面含义"解读下一个输入,要是想按"字面含义"输入Ctrl-V,连续输入两次就行了.
注:Linux中按下Ctrl-Z,表示将该进程中断,在后台挂起,用fg命令可以重新切回到前台;按下Ctrl-C表示终止该进程.
wc filename
行数、单词数、字节数、文件名
wc -c
如图中显示,该文件显示有24个字节,这是因为包括了空格符以及每行的换行符。
我们可以通过命令cat -A test.txt查看换行符,如下图所示:
wc -l
wc -m
wc -w
word,单词书,这里的单词包括英文单词和空白(空格、制表)分割的汉字、数字。总之,空白(空格、制表)分割的就算。
Administrator@WIN-DFIIOPTMTL8 MINGW64 /e/develop/shell_test
$ cat wc.test.txt
1 word 汉字
Administrator@WIN-DFIIOPTMTL8 MINGW64 /e/develop/shell_test
$ wc -w wc.test.txt
3 wc.test.txt #3个,上面的汉字算是一个
Administrator@WIN-DFIIOPTMTL8 MINGW64 /e/develop/shell_test
$ awk '{sub(/1 /,"");print $0 > FILENAME}' wc.test.txt #把 1空格 删除
Administrator@WIN-DFIIOPTMTL8 MINGW64 /e/develop/shell_test
$ cat wc.test.txt
word 汉字
Administrator@WIN-DFIIOPTMTL8 MINGW64 /e/develop/shell_test
$ wc -w wc.test.txt
2 wc.test.txt #2个,说明空格分割的数字也算一个单词