1

Я хочу напечатать первые 1000 символов в файле в кодировке UTF-8. Я знаю, что инструмент head может печатать первые n байтов файла, но он может вырезать символ посередине, чтобы в конце я получил искаженный вывод.

Я могу написать программу awk для этого, но могу ли я узнать, есть ли какой-нибудь более простой способ?

PS. Я считаю необоснованным, что голова и хвост не поддерживают кодировку символов (переменная среды LANG), в то время как другие инструменты, такие как cut, wc, sed и awk, поддерживают кодировку символов.

1 ответ1

0

Не уверен, что это проще, но это мой путь:

cat file | iconv -t UTF-32 | head -c $[1000 *4+4] | iconv -f UTF-32

Это преобразует Unicode в форму с фиксированной шириной, так что 1000 всегда будет представлять целые символы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .