Тысяча разделителей в printf в zsh

Я пытаюсь определить разделитель тысяч в printf какое-то время, и я обнаружил, что у zsh есть некоторые проблемы с ним.

В bash я могу использовать что-то вроде:

 $ printf "%'d\n" 1234567890 1,234,567,890 

но в zsh это не сработает:

 $ printf "%'d\n" 1234567890 printf: %': invalid directive 

Я только что узнал, что coreutils printf сделает это просто отлично:

 $/usr/bin/printf "%'d\n" 1234567890 1,234,567,890 

Как использовать разделитель тысяч в zsh?

 $ zsh --version zsh 5.0.2 (x86_64-pc-linux-gnu) 

2 Solutions collect form web for “Тысяча разделителей в printf в zsh”

Обновление: с zsh v. 5.1 , встроенный printf поддерживает группировку тысяч через ' точно так же, как bash / coreutils printf (см. Также обсуждение здесь ).


Разделитель тысяч – это расширение GNU, которое zsh не поддерживает , и у него есть собственный встроенный printf который вы используете вместо этого. Как упоминалось в связанном сообщении, вы можете получить языковой зависимый разделитель тысяч:

 zmodload zsh/langinfo echo $langinfo[THOUSEP] 

Если вам нужно специально и исключительно использовать zsh, вы можете использовать это с sed.

Вероятно, проще будет использовать нестроенный printf от GNU coreutils , что позволит использовать параметр separator тысяч, если ваша система:

 $ command printf "%'d\n" 1234567890 1,234,567,890 

command printf сообщает оболочке не использовать встроенный или псевдоним, а искать команду в $PATH .

Чтобы дополнить ответ Майкла , вы можете сделать форматирование с тысячей дескрипторов вручную с помощью операторов zsh :

 var=1234567 zmodload zsh/langinfo setopt extendedglob echo $var[1,(l=-($#var-1)/3*3)-1]${var[l,l?-1:l]//(#m)???/$langinfo[THOUSEP]$MATCH} 
  • Каждый раз, когда я запускаю tmux, запускается новый дочерний процесс ssh-agent (zshell)
  • Oh-My-Zsh удаляет дублированный путь в стеке каталогов
  • Распределение порядка стека каталога в zsh
  • gvim pipe не читает zshrc при запуске с рабочего стола
  • Переход к началу действия вставки в режиме vi оболочки VI
  • Дополнительный вывод при запуске команд из zsh в Guake
  • Сериализовать переменную оболочки в bash или zsh
  • command-click git commit ID в терминале и взять его в github?
  • Расширение поиска истории в zsh
  • Проблема в активации среды на сервере UAT
  • Постоянный каталог стеков через сессии в zsh
  • Linux и Unix - лучшая ОС в мире.