相关疑难解决方法(0)

获取一串字符的显示宽度

从 shell 脚本获取字符串的显示宽度(至少在终端上(在当前语言环境中以正确的宽度显示字符的终端))最接近便携式方式的方法是什么。

我主要对非控制字符的宽度感兴趣,但也欢迎考虑退格、回车、水平制表等控制字符的解决方案。

换句话说,我正在寻找一个围绕POSIX 函数的shell API wcswidth()

该命令应该返回:

$ that-command '????'   # 4 fullwidth characters
8
$ that-command 'Ste?phane' # 9 characters, one of which zero-width
8
$ that-command '?? ???' # 5 double-width Japanese characters and a space
11
Run Code Online (Sandbox Code Playgroud)

可以使用ksh93'sprintf '%<n>Ls'来考虑填充到<n>列的字符宽度,或者使用col命令(例如printf '++%s\b\b--\n' <character> | col -b)来尝试推导它,perl至少有一个 Text::CharWidth模块,但是否有更直接或可移植的方法。

这或多或少是对另一个问题的跟进,该问题是关于在屏幕右侧显示文本,您需要在显示文本之前获得该信息。

shell-script unicode

19
推荐指数
4
解决办法
3828
查看次数

标签 统计

shell-script ×1

unicode ×1