ラテン語以外の文字でfmtコマンドをどのように使用しますか?

ラテン語以外の文字でfmtコマンドをどのように使用しますか?

ギリシャ語でいくつかのテキスト出力形式を指定するには、fmtを使用する必要がありますが、ラテン文字と同じようには機能しません。たとえば、次の15文字の文章を考えてみましょう。

ラテン文字の場合:

 $echo "Have a nice day" | fmt -w 16
 Have a nice day

しかし、奇妙なことに、ビラテン文字の場合:

 $echo "Ηαωε α νιψε δαυ" | fmt -w 16
 Ηαωε α
 νιψε δαυ

実際、上記の文字列の場合、改行なしで印刷される最小値は次のとおりです-w 28

 $echo "Ηαωε α νιψε δαυ" | fmt -w 28
 Ηαωε α νιψε δαυ
 $echo "Ηαωε α νιψε δαυ" | fmt -w 27
 Ηαωε α νιψε
 δαυ

これが起こる理由と解決策(可能な場合)を説明できる人はいますか?

答え1

あなたの質問に答えると、ギリシャ文字は、ラテン語以外の文字、Unicode文字、および次の理由で機能しません。

同じではない基準、fmtはUnicodeをサポートしていません。

https://en.wikipedia.org/wiki/Fmt

補足説明

残念ながら、質問の2番目の部分はこれを行う方法についてです。

最近では、Heninger、Unicode Line Breaking Algorithm、2015-06-01など、Unicodeをラップする方法に関する技術レポートがあるようです。http://www.unicode.org/reports/tr14/ただし、これは単なる仕様であり、実際の実装やソフトウェアの運用事例については言及していないようです。リストされた電子メールを介して作成者に連絡できます。

ウィキペディアの記事に記載されており、fmt利用par可能なので、apt-getあなたが投稿したテキストでそれを試してみることにしました。

しかし、成功しませんでした。それでも、希望の方法で仕上げられていません。

$ echo "Ηαωε α νιψε δαυ" | par 16gr
Ηαωε α
νιψε δαυ

このmanページは非常に難しく、作成者も次のように警告します。not well-written for the end-userしかし、決心したら読んでみることができます。

答え2

fmtしたがって、「非ラテン語」言語(たとえば、おそらくUTF-8)は通常サポートされていません。を使用することもできますpar。そうします。

興味深いことに、SolarisとFreeBSDのマニュアルページはfmt非常によく似ており、1980年代半ば以降にプログラムが大幅に改善されていないことを示しています。

parこれはあなたのシステムのソフトウェアパッケージとして提供されるかもしれません。そうでない場合は、ここで簡単にコンパイルできます。

http://www.nicemice.net/par/

一方、適切parUTF-8サポートの欠如:

答え3

計画9ユーティリティは通常UTF-8をサポートします。以下をインストールしてUNIXシステムにインストールできます。plan9port。 macOS では Homebrew を使用できます。

brew install plan9port

どのインストール彼らfmtコマンドを受信して​​います9。好きなように動作するようです。

$ echo "Ηαωε α νιψε δαυ" | 9 fmt -w 16
Ηαωε α νιψε δαυ
$ echo "Ηαωε α νιψε δαυ" | 9 fmt -w 14
Ηαωε α νιψε
δαυ

関連情報