Как использовать команду fmt с нелатинскими символами?

You почти есть, вы можете попробовать следующее:

#!/bin/ksh -
## $1 = Folder

cd -P -- "$1" || exit

F1="TEST_FILE"
COUNT=$(($(wc -l < output.txt))) || exit
DATE=$(date "+%Y%m%d")
EXTENSION="_01_01.txt"
FILENAME="${F1}_${COUNT}_${DATE}_${EXTENSION}"

cp output.txt "$FILENAME"

Подстановка команд позволяет подставить вывод команды вместо самого имени команды. Подстановка команд должна происходить, если команда заключена следующим образом:

  $ (command) 
 

Как сказал @don_crissti, подробнее см. В здесь

4
17.01.2016, 16:41
3 ответа

Чтобы ответить на ваш вопрос, он не работает, потому что греческие символы не являются латинскими, 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 ссылалась на par , и она была доступна через apt-get , я решил попробовать ее в опубликованном вами тексте.

Но мне это не удалось, он все еще не завершается так, как вы хотите:

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

Страница man была достаточно сложной, что даже автор предупредил, что она: плохо написана для конечного пользователя , но если вы настроены решительно, вы можете попытать счастья, прочитав его.

5
27.01.2020, 20:49

fmt , как таковой, обычно не поддерживает "нелатинские" (в вашем примере, вероятно, UTF-8). Возможно, вы могли бы использовать par , который делает это.

Интересно, что страницы руководства Solaris и FreeBSD для fmt очень похожи, намекая на то, что программа не была заметно улучшена с середины 1980-х годов:

par может быть доступен как пакет для вашей системы. В противном случае его легко скомпилировать, и ее можно найти здесь:

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

С другой стороны, правильная поддержка UTF-8 в par отсутствует:

4
27.01.2020, 20:49

Утилиты Plan 9 обычно поддерживают UTF -8. Вы можете получить их на своем unix-компьютере, установивplan9port. В macOS вы можете использовать Homebrew

brew install plan9port

, который устанавливает ихfmtпод командой 9. Вроде ведет себя так, как ты хотел:

$ echo "Ηαωε α νιψε δαυ" | 9 fmt -w 16
Ηαωε α νιψε δαυ
$ echo "Ηαωε α νιψε δαυ" | 9 fmt -w 14
Ηαωε α νιψε
δαυ
0
27.01.2020, 20:49

Теги

Похожие вопросы