Преобразование строки в нижний регистр

Bash:
Преобразование строки в нижний регистр

Как это делать:

Вот простой способ преобразовать строку в нижний регистр в Bash:

str="Make Me Lower Case"
lower_str=$(echo "$str" | tr '[:upper:]' '[:lower:]')

echo $lower_str

Вывод:

make me lower case

В Bash версии 4.0 и выше существует встроенный способ с использованием расширения параметра:

str="Make Me Lower Case"
lower_str="${str,,}"

echo $lower_str

Вывод:

make me lower case

Подробнее

До Bash 4.0 для преобразования строк в нижний регистр часто использовались внешние утилиты, такие как tr, awk или sed. Каждая из них предоставляет различные способы манипуляции со строками, не ограничиваясь только изменением регистра, но может требовать запуска нового процесса, что влияет на производительность.

Введение синтаксиса ${parameter,,pattern} в Bash 4.0 предоставило встроенную функцию для преобразования строк, которая работает быстрее и не зависит от внешних утилит. Есть альтернативы внутри самого Bash:

  1. awk: echo $str | awk '{print tolower($0)}'
  2. sed: echo $str | sed 's/[A-Z]/\L&/g'
  3. tr: echo $str | tr '[:upper:]' '[:lower:]' - как показано выше.

С точки зрения реализации, ${parameter,,pattern} изменяют не только символы ASCII; они осведомлены о UTF-8 и могут обрабатывать неанглийские символы, что делает их универсальными для международных приложений.

Смотрите также