Geditはテキストを表示しますが、猫は別の話をします。

Geditはテキストを表示しますが、猫は別の話をします。

私は辞書を整理しようとしています。グラデーションワードの「モビー」そしていくつかの問題に直面しました。 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は外部エンコーディングを自動的に検出せず、そのロケールで解釈されるとファイルがどのように見えるかを示します。

おすすめ記事