Gedit 显示文本,但 cat 讲述了不同的故事

Gedit 显示文本,但 cat 讲述了不同的故事

我正在尝试对字典进行排序格雷迪·沃德的《莫比》并且遇到了一些问题。当我在 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>,我完全迷失了。我需要能够删除这两个内容以使人类可读,尽管我确信机器可以很好地通过它。 :/

我运行的是 Ubuntu 15.04。

答案1

mobyposi.i文件使用旧式 Mac 行结尾,即 CR 字符。为什么?我不知道。这个文件是1993年的,也许作者想要Mac友好,并认为Unix和Windows用户可以自己解决。或者也许作者犯了一个错误,文件readme指出“词汇文件[有] 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 不会自动检测外来编码,它会向您显示文件在您的语言环境中解释时的样子。

相关内容