linux的wcl命令统计文件少一行(一般是windows文件

本文发布时间: 2019-Mar-22
先简单介绍wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出格式:wc file命令参数:-c 统计Bytes数(字节数),并显示文件名-l 统计行数:使用换行符‘\n’作为行结束标志,实际是统计换行符个数-m 统计字符数。这个标志不能与 -c标志一起使用。-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。-L 打印最长行的长度。-help 显示帮助信息--version 显示版本信息 实例:wc test.txt 6 24 132test.txt默认输出:行,字数,字节数 test.txt内容Cat test.txttest1 name1 age1 sex1test2 name2 age2 sex2test3 name3 age3 sex3test4 name4 age4 sex4test5 name5 age5 sex5test6 name6 age6 sex6 问题:wc 统计行数时少一行:因为wc –l是按\n作为行结束符统计行数,所以最后一行如果没有\n的话会统计丢失。实例:比如,在windows下生成同上面test.txt相同的文件testtt.txt,上传到linux下:cat testtt.txt test1 name1 age1 sex1test2 name2 age2 sex2test3 name3 age3 sex3test4 name4 age4 sex4test5 name5 age5 sex5test6 name6 age6 sex6[wizad@srv26 lmj]$可以看出结尾有点奇怪。这是因为文件末尾无\n,而是直接用了文件结束符EOF。这样文件使用wc统计就会少一行:wc -l testtt.txt 5 24 136 testtt.txt使用管道也不行:cat testtt.txt | wc -l5 为什么linux下没有这样的问题? 因为vim编辑器会自动在文件结尾加上\n,在加上文件结束符EOF。(linux下文本文件主要按处理,所以vim会末行自动加\n) 而对windows文件用dos2unix转化也不行:[wizad@srv26 lmj]$ dos2unix testtt.txt dos2unix: converting file testtt.txt toUNIX format ...[wizad@srv26 lmj]$ wc testtt.txt 5 24131 testtt.txt可以看出windows文件在linux下还是有兼容问题的。文件字数没变24,byte数少5个是windows下行结束符是回车\r+换行\n。而linux下只是换行\nVim二进制可以看到不同,\n显示为.,文件结尾没有


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:09pm
栏目列表