Не уверен, что это проще, но это мой путь:
cat file | iconv -t UTF-32 | head -c $[1000 *4+4] | iconv -f UTF-32
Это преобразует Unicode в форму с фиксированной шириной, так что 1000 всегда будет представлять целые символы.
Я хочу напечатать первые 1000 символов в файле в кодировке UTF-8. Я знаю, что инструмент head может печатать первые n байтов файла, но он может вырезать символ посередине, чтобы в конце я получил искаженный вывод.
Я могу написать программу awk для этого, но могу ли я узнать, есть ли какой-нибудь более простой способ?
PS. Я считаю необоснованным, что голова и хвост не поддерживают кодировку символов (переменная среды LANG), в то время как другие инструменты, такие как cut, wc, sed и awk, поддерживают кодировку символов.
Не уверен, что это проще, но это мой путь:
cat file | iconv -t UTF-32 | head -c $[1000 *4+4] | iconv -f UTF-32
Это преобразует Unicode в форму с фиксированной шириной, так что 1000 всегда будет представлять целые символы.