2015-10-27 23 views
0

我從https://api.data.gov/ed/collegescorecard/v1/schools?api_key=[my_API_key]廁所-l在非空文件

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

下載的文件是1.5MB下載使用我的服務器上的捲曲一個JSON文件,並有一個非常大的返回0,(和有效)JSON對象。但是,在服務器上,當我對文件運行命令wc -l時,它返回0.運行wc -c返回正確的字節數。

我在TextEdit中打開了文件,看起來很好。我也注意到,man wc我的服務器(CentOS的5.5)和man wc我的Mac(優勝美地)上似乎對-l標誌做什麼不同的描述:

的CentOS 5.5:

打印換行符計數

OSX 10.10.5約塞米蒂

線在每個輸入文件的數目被寫入到標準outpu噸。

哪個手冊是正確的? wc -l計數行或新行?如果它計算行數而不是換行,那麼即使文件中有一行,wc -l也可能返回0嗎?

Mark的關於this related SO post上基於Windows的字符的評論是否可以正確診斷?我對我的文件運行了cat -vet,但是使用grep找不到^M,而且手動搜索的方式太多了。

+0

你爲什麼要計算一個JSON文件中的行? – Evert

+0

@覆蓋傳統上用於CSV的大量傳統腳本,我沒有時間更換。部分腳本是檢查它正在處​​理的文件是否沒有數據。我可能會將它從'wc -l'更改爲'wc -c',但只是試圖覆蓋我所有的基礎。 –

回答

1

在OS X上的手冊頁還表示(在本說明書第一段):

的線被定義爲通過<換行符>字符分隔字符的字符串。

因此,兩個版本的mangpages之間沒有矛盾。

因爲你的文件沒有一個換行符,wc -l正確返回0。

+0

爲什麼每次發現關於在文件中計數行的帖子都有人使用'wc -l'呢?文件中的每一行都可以在後面有一個換行符,除了最後一行,然後'wc -l'將返回一個值。 –

+0

因爲大多數文件都以換行符結尾。 'wc -l'也常用於管道中,這通常也沒有問題。 – Evert

+0

另請參閱側欄中的相關鏈接之一:http://stackoverflow.com/questions/729692/why-should-files-end-with-a-newline?rq=1,它告訴你這是一個POSIX定義爲一條線。 – Evert