wc -l在非空文件上返回0

时间:2015-10-27 17:36:19

标签: newline wc

我在https://api.data.gov/ed/collegescorecard/v1/schools?api_key=[my_API_key]

的服务器上使用Curl下载了一个JSON文件

I have uploaded the file to TinyUpload if you want to play around with it.

下载的文件是1.5MB,并且具有非常大(且有效)的JSON对象。但是,在服务器上,当我对文件运行命令wc -l时,它返回0.运行wc -c返回正确的字节数。

我在TextEdit中打开文件,看起来很好。我注意到我的服务器上的man wc(CentOS 5.5)和我的Mac(Yosemite)上的man wc似乎对-l标志的作用有不同的描述:

CentOS 5.5:

  

打印换行计数

OSX 10.10.5 Yosemite

  

每个输入文件中的行数写入标准输出。

哪个手册是正确的? wc -l计算行数或换行数吗?如果它确实计算了行而不是新行,那么即使文件中有一行,wc -l也可以返回0吗?

Mark对this related SO post中基于Windows的字符的评论是否也可能是正确的诊断?我针对我的文件运行了cat -vet,但是使用grep找不到^M,并且手动搜索的文本太多了。

1 个答案:

答案 0 :(得分:1)

OS X上的联机帮助页也说(说明中的第一段):

  

一条线被定义为由<界定的字符串。换行符>字符。

因此,两个版本的页面之间没有矛盾。

由于您的文件没有换行符,wc -l正确返回0。