linux的wc -l 命令统计文件少一行(一般是windows文件)
先简单介绍
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.txt
test1 name1 age1 sex1
test2 name2 age2 sex2
test3 name3 age3 sex3
test4 name4 age4 sex4
test5 name5 age5 sex5
test6 name6 age6 sex6
问题:wc 统计行数时少一行:
因为wc –l是按\n作为行结束符统计行数,所以最后一行如果没有\n的话会统计丢失。
实例:比如,在windows下生成同上面test.txt相同的文件testtt.txt,上传到linux下:
cat testtt.txt
test1 name1 age1 sex1
test2 name2 age2 sex2
test3 name3 age3 sex3
test4 name4 age4 sex4
test5 name5 age5 sex5
test6 name6 age6 sex6[wizad@srv26 lmj]$
可以看出结尾有点奇怪。这是因为文件末尾无\n,而是直接用了文件结束符EOF。这样文件使用wc统计就会少一行:
wc -l testtt.txt
5 24 136 testtt.txt
使用管道也不行:
cat testtt.txt | wc -l
5
为什么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下只是换行\n
Vim二进制可以看到不同,\n显示为.,文件结尾没有
相关文章
- 在Windows上使用终端模拟程序连接操作Linux以及上传下载文件
- Windows平台交叉编译Arm Linux平台的QT5.7库
- 揭露让 Linux 与 Windows 隔阂消失的奥秘
- 面向 Windows 系统管理员的 Linux: 使用 GNOME 桌面工具管理 Linux
- 怎样选择你的最佳商用Linux服务器?
- 给你的 Linux 桌面披上 Windows 8 的外衣
- Linux上TensorFlow的深入研究:构建一个低成本、快速、精准的图像分类器
- Linux挂载读取Windows分区文件及PVE 下挂载到虚拟机和LXC容器方法
- redis-windows和linux下安装
- 解析Linux特殊文件【转】
- 使用WinSCP从Linux向Windows传送大文件
- Linux集群配置ntp时间同步服务
- 转 windows下安装pycharm并连接Linux的python环境 以及 windows 下notepad ++编辑 linux 的文件
- 利用FTP将Linux文件备份到Windows
- php 将office文件(word/excel/ppt)转化为pdf(windows和linux只要安装对应组件应该就行)
- Linux与Windows的设备驱动模型对比:架构、API 和开发环境比较
- 德国慕尼黑市政府花费巨资用Linux代替Windows XP/2000
- windows和linux中检查端口是否被占用
- windows通过使用xShell远程linux上传文件
- Robot:robot如何连接Oracle数据库(windows+linux)
- Windows和linux通过命令互传文件
- C语言单元测试框架——CUnit 安装(windows和Linux)及使用
- 真正实现一个命令搭建好个人博客,适用于Linux、MacOS、Windows相关环境,带有源码可自己进行修改
- Microsoft宣布新版SQL Server将支持Windows与Linux两大平台