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显示为.,文件结尾没有
linux的wc -l 命令统计文件少一行(一般是windows文件)的更多相关文章
- 【Linux】wc :字数统计命令
wc :(Word Count) 统计每个传入文件中行数.词数与字节数 $ wc py_this # 三个数字分别对应行数.词数和字节数 21 144 857 py_this $ wc py_this ...
- linux之ls -l|grep "^-"|wc -l命令
查看某文件夹下文件的个数 ls -l |grep "^-"|wc -l 或 find ./company -type f | wc -l 查看某文件夹下文件的个数,包括子文件夹里的 ...
- linux下ls -l命令(即ll命令)查看文件的显示结果分析
在linux下使用“ls -l”或者“ls -al”或者“ll”命令查看文件及目录详情时,shell中会显示出好几列的信息.平时也没怎么注意过,今天忽然心血来潮想了解一下,于是整理了这篇博客,以供参考 ...
- 使用wc -l 来统计代码行数
Linux使用wc来统计行数真的好用 如在当前路径下统计一共多少行代码 $ find ./ -name *.c |xargs wc -l #包括了空行 ##-l :lines 如果不包括空行 ¥fin ...
- linux的一个find命令配合rm删除某天前的文件
语句写法: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前 ...
- (转)linux的一个find命令配合rm删除某天前的文件
转自:http://www.cnblogs.com/mingforyou/p/3930624.html 语句写法:find 对应目录 -mtime +天数 -name "文件名" ...
- linux下 ls -l 命令显示结果每一列代表什么意思
第一个栏位,表示文件的属性.Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x).但是这里有十个格子可以添(具体程序实现时,实际上是十个bit位).第一个小格是特殊表示格,表示目录 ...
- Linux进程管理 lsof命令:列出进程调用或打开的文件信息
lsof命令 通过 ps 命令查询到系统中所有的进程, 通过lsof 命令可以知道这个进程到底在调用哪些文件.lsof 命令格式如下: [root@localhost ~]# lsof [选项] 选项 ...
- Linux中 ls -l 命令显示结果中的每一列的含义
图片转载自:https://blog.csdn.net/zhuoya_/article/details/77418413 简单解释下: 1.第一列颜色框:文件类型列,这里简单描述几种常见类型,d表示目 ...
随机推荐
- A neural chatbot using sequence to sequence model with attentional decoder. This is a fully functional chatbot.
原项目链接:https://github.com/chiphuyen/stanford-tensorflow-tutorials/tree/master/assignments/chatbot 一个使 ...
- Jenkins简明入门(三) -- Blue Ocean,让一切变得简单
我们在上一节Jenkins简明入门(二) 中见识到了Jenkins能做些什么:利用Jenkins完成python程序的build.test.deployment. 同时,也有一种简单的方法,不需要写J ...
- 你知道src、url、href的全称吗?
url:Uniform Resource Locator统一资源定位符 src:Source资源 href:Hypertext Reference超文本引用
- JAVA 访问WebRoot下的目录文件
转自 http://blog.csdn.net/jian_csdn/article/details/46119313 ClassLoader classLoader = Thread.currentT ...
- python之with的使用
python之with使用 with工作原理 紧跟with后面的语句被求值后,返回对象的__e ...
- JS中数组和字符串的方法大全
数组的方法很多,ECMScript5又提供了好几种方法.有空把之前的云上的笔记整理了一下,方便自己以后查找使用. 一.ECMScript 3的Array.prototype中定义的方法 1.join( ...
- Python小代码_7_字符串的字符次数统计
生成包含 1000 个随机字符的字符串,并统计每个字符出现的次数. import string import random #获取字符 x = string.ascii_letters + strin ...
- jsp&servlet初体验——用户登录功能实现
数据库准备-创建db_login数据库 t_user表 1.创建web工程 2.创建用户model user.java package com.gxy.model; public class U ...
- Dubbo介绍和服务架构分析
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成.使用zookeeper作为服务的注册中心,对外提供服务 ...
- 安装oracle时修改Linux版本问题
Linux安装Oracle报Checking operating system version must be redhat, SuSE, redhat, UnitedLinux or asianux ...