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:
awk:echo $str | awk '{print tolower($0)}'sed:echo $str | sed 's/[A-Z]/\L&/g'tr:echo $str | tr '[:upper:]' '[:lower:]'- как показано выше.
С точки зрения реализации, ${parameter,,pattern} изменяют не только символы ASCII; они осведомлены о UTF-8 и могут обрабатывать неанглийские символы, что делает их универсальными для международных приложений.
Смотрите также
- Расширение параметров Bash: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
- Команда
tr: https://www.gnu.org/software/coreutils/manual/html_node/tr-invocation.html - Программирование в AWK: https://www.gnu.org/software/gawk/manual/gawk.html
- Редактор потоков
sed: https://www.gnu.org/software/sed/manual/sed.html