<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]cat  wc -l 少一行的问题，linux的wc -l 命令统计文件少一行（一般是windows文件）。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Tue, 27 Jun 2017 14:13:50 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：用Windows下的Excel，再倒腾成Txt，在Linux下统计发现少一行，最后，用vi对最后一行的行尾按回车后再加一行，后删除这一行，再统计就对了，具体原因如下。<br/>今天从一个服务器列表来批量执行expect脚本进行Tivoli Endpoint Client的安装，从excel表格中拷贝出服务器名导入到txt文件上传到服务器后，执行wc -l统计发现少了一行，反复对比确认不存在遗失的条目，那么为什么wc -l少一行呢？<br/>查询帮助文件：<br/>[root@managevm1 ~]# wc --help<br/><br/>-l, --lines&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print the newline counts<br/><br/>-l用来统计新行的个数，那么用什么来标记新行的开始呢？对了!用换行符&#92;n。于是用 vi编辑器打开txt文件，在最后一行的行尾回车下，然后ESC推出到命令模式，dd删除自然生成的最后一个空行。保存退出再次运行wc -l统计，这样就和excel中的行数一样了。<br/><br/>=============================================================<br/>先简单介绍<br/><br/>wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数，并将统计结果显示输出<br/><br/>格式：wc file<br/><br/>命令参数：<br/><br/>-c 统计Bytes数(字节数)，并显示文件名<br/><br/>-l 统计行数：使用换行符‘&#92;n’作为行结束标志，实际是统计换行符个数<br/><br/>-m 统计字符数。这个标志不能与 -c标志一起使用。<br/><br/>-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。<br/><br/>-L 打印最长行的长度。<br/><br/>-help 显示帮助信息<br/><br/>--version 显示版本信息<br/><br/>实例：<br/><br/>wc test.txt<br/><br/>6&nbsp;&nbsp;24 132test.txt<br/><br/>默认输出：行，字数，字节数<br/><br/><br/><br/>test.txt内容<br/><br/>Cat test.txt<br/><br/>test1 name1 age1 sex1<br/><br/>test2 name2 age2 sex2<br/><br/>test3 name3 age3 sex3<br/><br/>test4 name4 age4 sex4<br/><br/>test5 name5 age5 sex5<br/><br/>test6 name6 age6 sex6<br/><br/>问题：wc 统计行数时少一行：<br/>因为wc ?l是按&#92;n作为行结束符统计行数，所以最后一行如果没有&#92;n的话会统计丢失。<br/><br/>实例：比如，在windows下生成同上面test.txt相同的文件testtt.txt，上传到linux下：<br/>cat testtt.txt<br/><br/>test1 name1 age1 sex1<br/><br/>test2 name2 age2 sex2<br/><br/>test3 name3 age3 sex3<br/><br/>test4 name4 age4 sex4<br/><br/>test5 name5 age5 sex5<br/><br/>test6 name6 age6 sex6[wizad@srv26 lmj]$<br/><br/>可以看出结尾有点奇怪。这是因为文件末尾无&#92;n，而是直接用了文件结束符EOF。这样文件使用wc统计就会少一行：<br/><br/>wc -l testtt.txt<br/><br/>5 24 136 testtt.txt<br/><br/>使用管道也不行：<br/><br/>cat testtt.txt &#124; wc -l<br/><br/>5<br/><br/>为什么linux下没有这样的问题？<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为vim编辑器会自动在文件结尾加上&#92;n，在加上文件结束符EOF。（linux下文本文件主要按处理，所以vim会末行自动加&#92;n）<br/><br/>而对windows文件用dos2unix转化也不行：<br/>[wizad@srv26 lmj]$ dos2unix testtt.txt<br/><br/>dos2unix: converting file testtt.txt toUNIX format ...<br/><br/>[wizad@srv26 lmj]$ wc testtt.txt<br/><br/>5&nbsp;&nbsp;24131 testtt.txt<br/><br/>可以看出windows文件在linux下还是有兼容问题的。文件字数没变24，byte数少5个是windows下行结束符是回车&#92;r+换行&#92;n。而linux下只是换行&#92;n<br/><br/>Vim二进制可以看到不同，&#92;n显示为.，文件结尾没有<br/><br/>来自:http://blog.csdn.net/sws9999/article/details/7942074
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]cat  wc -l 少一行的问题，linux的wc -l 命令统计文件少一行（一般是windows文件）。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>