在bash脚本中,如何获取String的显示宽度

时间:2012-03-26 06:19:22

标签: bash widechar

我想要一个bash函数来计算显示时会出现的字符串宽度。 因为在我的情况下,String可能包含一些广泛的特征(例如中文)。所以我不能只使用字符串的长度。

function getDisplayWidth ()
{
  ???
}

然后“abc”将返回3 并且“前后”应该返回4而不是2。

2 个答案:

答案 0 :(得分:4)

如果wc的实施具有-L选项,那么这似乎是正确的“事物”。 (Coreutils拥有它,不确定是否有其他人这样做。)

例如:

$ getw() { wc -L <<< "$1"; }
$ getw 前后
4
$ getw 前a后c
6
$ getw abc前后
7
$ getw "行书 / 行書"
11

答案 1 :(得分:0)

试试wc -m。从os x手册页:

  

每个输入文件中的字符数写入标准   输出。如果当前语言环境不支持多字节字符,   这相当于-c选项。这将取消任何先前的   使用-c选项。