Bash: WC命令與VIM的行數(shù)問題

今天碰到一個很有趣的問題畏纲,就是有一個文件,我們需要得到他的行數(shù)敏晤,明明是 n 行的文本桨吊,使用 wc 命令總會少一行威根。

wc -l foo.txt

當(dāng)時我的第一反應(yīng)是 wc 命令應(yīng)該和最后一行沒有換行符有關(guān),因為那個文件的內(nèi)容是使用下面的代碼生成的视乐,這樣的話就能解釋為什么得到 n-1 這個結(jié)果了洛搀。

$filecontent = implode("\n", $arr);

man 一下 wc 的命令說明。

A line is defined as a string of characters delimited by a <newline> character. Characters beyond the final <newline> character will not be included in the line count.

的確如此佑淀,那么問題就解決了嗎留美?當(dāng)然沒有,因為當(dāng)時還有一個奇怪的現(xiàn)象,就是如果我使用 vim 編輯并保存這個文件谎砾,wc 命令的結(jié)果就恢復(fù)“正撤瓯叮”了。

后來我開始懷疑有不可見字符景图,而且這個字符是 vim 加的较雕。我當(dāng)時是這樣 Google 的。

vim auto newline end of file

果然被我找到了一個回答挚币。我們可以當(dāng)場做一個實驗亮蒋,先使用 vim 新建一個文件,名為 foo.txt妆毕,輸入下面的文本慎玖。

a
b

再運行 wc -l foo.txt,結(jié)果會是 2笛粘。然后我們使用回答里的命令趁怔,重新保存文件。

vim -b foo.txt
:set noeol
:wq

再運行 wc -l foo.txt闰蛔,結(jié)果會是 1痕钢,因為關(guān)掉了文件未尾自動加的換行图柏。這就是為什么之前用 vim 保存過后(即使不編輯)序六,wc 的結(jié)果還是會改變的原因。

這讓我想起了以前使用 VC6.0C 的時候蚤吹,源文件最后如果沒有多出一個空行例诀,就會警告,提到 VC6.0 真是懷念啊裁着,可能這就是我的青春吧繁涂,狗日的哈哈哈。

最后二驰,這個本質(zhì)其實是和 POSIXnewline定義有關(guān)的扔罪,這樣所有問題都能解釋了。

3.206 Line
A sequence of zero or more non- <newline> characters plus a terminating <newline> character.

晚上在全家買了一罐櫻桃味的可樂桶雀,然后解決了問題矿酵,很開心 \m/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市矗积,隨后出現(xiàn)的幾起案子全肮,更是在濱河造成了極大的恐慌,老刑警劉巖棘捣,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辜腺,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機评疗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門测砂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人百匆,你說我怎么就攤上這事邑彪。” “怎么了胧华?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵寄症,是天一觀的道長。 經(jīng)常有香客問我矩动,道長有巧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任悲没,我火速辦了婚禮篮迎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘示姿。我一直安慰自己甜橱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布栈戳。 她就那樣靜靜地躺著岂傲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪子檀。 梳的紋絲不亂的頭發(fā)上镊掖,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音褂痰,去河邊找鬼亩进。 笑死,一個胖子當(dāng)著我的面吹牛缩歪,可吹牛的內(nèi)容都是我干的归薛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼匪蝙,長吁一口氣:“原來是場噩夢啊……” “哼主籍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起骗污,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤崇猫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后需忿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诅炉,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蜡歹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涕烧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片月而。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖议纯,靈堂內(nèi)的尸體忽然破棺而出父款,到底是詐尸還是另有隱情,我是刑警寧澤瞻凤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布憨攒,位于F島的核電站,受9級特大地震影響阀参,放射性物質(zhì)發(fā)生泄漏肝集。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一蛛壳、第九天 我趴在偏房一處隱蔽的房頂上張望杏瞻。 院中可真熱鬧,春花似錦衙荐、人聲如沸捞挥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砌函。三九已至,卻和暖如春瀑罗,著一層夾襖步出監(jiān)牢的瞬間胸嘴,已是汗流浹背雏掠。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工斩祭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乡话。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓摧玫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绑青。 傳聞我的和親對象是個殘疾皇子诬像,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)闸婴,斷路器坏挠,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • vim 選擇文本,刪除邪乍,復(fù)制降狠,粘貼 文本的選擇对竣,對于編輯器來說,是很基本的東西榜配,也經(jīng)常被用到否纬,總結(jié)如下: v 從...
    壹首簡單的歌閱讀 880評論 0 7
  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系蛋褥?...
    Zero___閱讀 3,139評論 3 49
  • 首先临燃,我們在使用前先看看HDFS是什麼?這將有助于我們是以后的運維使用和故障排除思路的獲得烙心。 HDFS采用mast...
    W_Bousquet閱讀 4,174評論 0 2
  • 關(guān)于告別膜廊,我能想到的是遺憾; 這是在我工作一年左右外婆傳來噩耗走去遠方而我卻遠在貴陽出差的去年淫茵; 鮮有征兆的被告知...
    沉小小小淪8023閱讀 272評論 0 0