в скрипте bash, как получить ширину отображения строки - PullRequest
4 голосов
/ 26 марта 2012

Я хочу, чтобы функция bash рассчитывала ширину строки, которая будет использоваться при отображении.потому что в моих случаях String может содержать несколько широких символов (например, китайский).Поэтому я не могу просто использовать длину строки.

function getDisplayWidth ()
{
  ???
}

Тогда «abc» вернет 3, а «前后» вернет 4 вместо 2.

Ответы [ 2 ]

4 голосов
/ 26 марта 2012

Если ваша реализация wc имеет опцию -L, то, по-видимому, считается правильной «вещью». (У Coreutils он есть, но я не уверен, есть ли у других).

Ex:

$ getw() { wc -L <<< "$1"; }
$ getw 前后
4
$ getw 前a后c
6
$ getw abc前后
7
$ getw "行书 / 行書"
11
0 голосов
/ 26 марта 2012

Попробуйте wc -m.Со страницы руководства os x:

Количество символов в каждом входном файле записывается в стандартный вывод.Если текущая локаль не поддерживает многобайтовые символы, это эквивалентно опции -c.Это отменит любое предыдущее использование опции -c.

...