Text-Processing
Gedit 顯示文本,但 cat 講述不同的故事
我正在嘗試從Grady Ward 的 Moby中對字典進行排序,但遇到了一些問題。當我在 gedit 中打開它時,我得到:
abaca×N abaciscus×N abacist×N aback×v abacli×p Abaco×N abactinal×A abaculus×N abacus×N abac×N Abadan×N Abaddon×N Abad×N abaft×vP Abagael×N Abagail×N
等等。
然而,
cat mobyposi.i | less
講述了一個不同的故事。我最終會在每一行開頭<D7>
和結尾都得到一堆亂七八糟的字元,^M
而且無法閱讀。
^M
絕對是一個換行符,dos2unix 不能解決這個問題。至於<D7>
’s go,我完全迷路了。我需要能夠刪除這兩個以使其易於閱讀,儘管我確信機器可以很好地通過它。:/我正在執行 Ubuntu 15.04。
該
mobyposi.i
文件使用舊式 Mac 行尾,即 CR 字元。為什麼?我不知道。這個文件是 1993 年的,也許作者想對 Mac 友好,並認為 Unix 和 Windows 使用者可以自己解決。或者可能是作者弄錯了,readme
文件說“詞彙文件$$ has $$CRLF(ASCII 13/10)分隔符”,而分隔符實際上只是 CR。 單詞和詞性由字節 D7₁₆ = 215₁₀ = 327₈ 分隔。Gedit顯示的
×
字元是Latin-1編碼中該字節對應的字形。要將行尾轉換為 Unix 行尾 (LF) 並將單詞/部分分隔符轉換為
:
,請執行LC_CTYPE=C tr '\r\327' '\n:' <mobyposi.i >mobyposi.txt
dos2unix
沒有做任何事情,因為輸入沒有 DOS 行尾。Gedit 自動檢測到外來編碼的文件(它檢測到換行符,檢測到單字節編碼,並在眾多可能性中選擇了 Latin-1,因為它是這樣配置的)。Less 不會自動檢測外來編碼,它會向您展示在您的語言環境中解釋時文件的外觀。