Linux 命令wc 小插曲

做开发的或多或少都会接触过wc 这个命令吧,手册里说这个命令的的作用是“print newline, word, and byte counts for each file”,一般情况下大家可以用wc -l $file 来统计文件中行数。

但是你如果按下面这样操作,就会发现一个有趣的事情。

php -r 'file_put_contents("/tmp/a.txt", implode(PHP_EOL, array(1, 2)));';
wc -l /tmp/a.txt #one line
awk '{print NR}' /tmp/a.txt #two lines

我理解的这个地方正常应该显示两行才对,因为换行符意思就是结束上一行开始新一行,所以在有一个换行符的情况下应该按两行来处理。这个在工作中有时可能需要注意下,有很多程序可能写入文件的时候都没有在最后添加换行符,所以如果直接用wc可能不够准确。

发表评论

电子邮件地址不会被公开。 必填项已用*标注