文章目录
- 主逻辑
- OK
- 互相交流
linux好用就好用在在shell上有太多使用的小工具了。比如能够详细统计文件内容的tokei
就是其中之一。堪称程序员神奇,对文件的语言代码以及注释,都可以给一个数据统计。如下图:
不过我们今天的主角并不是tokei,而是一个更简单的小工具,叫wc
指令,wc用法如下:
wc file.txt
1068 356 100
wc接收一个参数,就是文件名,它可以计算包含在文件中的字符、单词和行数。这里咱们假设
- 每个字符都是用ASCII编码的
- 把一个单词看作是空格之间的任意字符串
- 一行的转义字符序列为
\n
话不多少,一起来看代码实现吧。
主逻辑
整个代码都很简单,总共55
行,在这里学习到的系统调用主要还是文件相关的内容:fopen
, fclose
, fgetc
。我们需要意识到每一个文件都是由二进制组成的,如果把一个文件当作文本文件,一般来说是某个代码文件,那么,可以一个字节一个字节地去读相应的字符,对应于文件中你所看到的ascii码。之后再判断是否是换行符空格符,来统计行数和单词数了。
while部分的判断是本代码的核心。
while((c = fgetc(f)) != EOF) {
if(c == '\n') {
lines++;
if(word_ev > 0) {
words++;
word_ev = 0;
}
} else if(c == ' ') {
if(word_ev > 0) {
words++;
word_ev = 0;
}
} else {
word_ev++;
}
bytes++;
}
OK
好了,上次所介绍的shell指令一次性实现了多条指令,看起来比较困难,但却是整个linux指令的核心,所以也正好学些其他简单的指令放松放松了~
互相交流
读者你好!如果你对本文内容感兴趣,我十分希望能够和你互相学习,可以扫码和我联系!一起进步