Text-Formatting
如何對非拉丁字元使用 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 Ηαωε α νιψε δαυ
如果可能的話,有人可以解釋為什麼會發生這種情況以及如何解決它嗎?
要回答您的問題,它不起作用,因為希臘字元是非拉丁字元、Unicode 字元,並且:
與par不同, fmt 不支持 Unicode,…
https://en.wikipedia.org/wiki/Fmt
補充筆記
不幸的是,關於如何做的問題的第二部分,
儘管似乎有一份關於如何包裝 Unicode 的最新技術報告,例如 Heninger, Unicode Line Breaking Algorithm , 2015-06-01 http://www.unicode.org/reports/tr14/但這似乎只是規範,沒有實際實現或提及軟體操作範例。您可以嘗試通過列出的電子郵件詢問作者。
fmt
由於引用了 Wikipedia 文章par
,並且可以通過 獲得apt-get
,我決定在您發布的文本上嘗試一下。但我沒有成功,它仍然沒有按照你希望的方式包裝:
$ echo "Ηαωε α νιψε δαυ" | par 16gr Ηαωε α νιψε δαυ
該
man
頁面非常困難,甚至作者都警告說它是:not well-written for the end-user
,但如果你確定你可以試試你的運氣閱讀它。