返回首页 shell 脚本编程

shell 学习二十二天---计算行数,字数以及字符数

wc 命令可能是 linux 工具集里最古老也最简单的工具程序.wc 的默认输出是一行报告,包括行数,字数以及字节数: echo this is a test of the emergency broadcast system | wc
1 9 49
如果要求仅输出部分结果,可以使用的选项有:-c(字节数),-l(行数),-w(字数);
echo test one two three | wc -c
19
echo test one two three | wc -l
1
echo test one two three | wc -w
4
-c 选项原本是表示字符数,但因为有多字节字符集的编码存在----像是 UTF-8,因此在当前系统上,字节数已不再等同于字符数了,也因此,posix 出现了-m 选项,用以计算多字节字符,对 8 位字符数据而言,它是等同于-c 的.

虽然 wc 最长处理的是来自于管道的输入数据,但它也接受命令行的文件参数,可以生成一行一个结果,再附上报告:计算两个文件里的数据
输入命令:wc /etc/passwd /etc/group
输出结果:

40   61 1804 /etc/passwd  
64   64  874 /etc/group  
104  125 2678 总用量  

wc 的现代版会随 locale 而有不同结果:将环境变量 LC_CTYPE 设为想用的 locale,会影响 wc 把字节序列解释为字符或单词分隔器.
做一个操作,需要把一个文件的行数存在另一个文件里。可是这个 wc 还会同时输出文件名。咋办?简单,用管道处理一下
wc -l demo.txt | awk -F" " '{print$1}'
这样,我们就把想要的文件行数给取到了,至于存在另一个文件里,我们可以把 awk 的 print 结果重定向到文件啊,

补充:wc 所有选项
-c:统计字节数
-l:统计行数
-m:统计字符数.这个标志不能与-c 标志一起使用
-w:统计字数.一个字被定义为由空白,挑个或换行字符分隔的字符串.
-L:打印最常行的长度
-help:显示帮助信息
--version:显示版本信息

上一篇: 重新格式化段落 下一篇: 打印