В этой заметке будет показано, как преобразовать строку в нижний регистр (строчные буквы) в командной строке Linux.
Чтобы конвертировать строку в маленькие буквы независимо от её текущего регистра, используйте одну из следующих команд.
tr
echo "Hi all" | tr '[:upper:]' '[:lower:]' hi all
Внимание! Если вы хотите изменить регистр каких-либо букв кроме латиницы (национальные алфавиты, буквы с диакритическими знаками), то не используйте tr, а используйте любое другое решение, предложенное далее. Это связано с тем, что классическая Unix tr оперирует символами однобайтовой кодировки и не совместима с Unicode.
AWK
echo "Hi all" | awk '{print tolower($0)}' hi all
Bash
a="Hi all" echo "${a,,}" hi all
Начиная с Bash 5.1 имеется параметр преобразования L, который предназначен для перевода строки в нижний регистр:
${var@L}
Пример:
v="heLLo" echo "${v@L}" hello
sed
echo "Hi all" | sed -e 's/\(.*\)/\L\1/' hi all
Либо такой вариант:
echo "Hi all" | sed -e 's/\(.*\)/\L\1/' <<< "$a" hi all
Ещё один вариант:
echo "Hi all" | sed 's/./\L&/g'
Perl
echo "Hi all" | perl -ne 'print lc' hi all
Python
a="Hi all" b=`echo "print ('$a'.lower())" | python`; echo $b
Ruby
a="Hi all" b=`echo "print '$a'.downcase" | ruby`; echo $b
PHP
b=`php -r "print strtolower('$a');"`; echo $b
NodeJS
b=`node -p "\"$a\".toLowerCase()"`; echo $b
Оболочка zsh
a="Hi all" echo $a:l
Связанные статьи:
- Как преобразовать строку в верхний регистр в Bash (100%)
- Как удалить newline (символ новой строки) из вывода команд и файлов в командной строке Linux (29.3%)
- Решение проблемы с ошибкой cannot load such file -- test/unit (LoadError) (26.1%)
- Как установить конкретную версию Ruby gem? (26.1%)
- Как запустить bundle install от root (26.1%)
- Как получить содержимое и кукиз .onion сайта в Python (RANDOM - 2.5%)
кстати, обычный tr для данной задачи плохо работает с кирилицей
$ echo Привет МИР | tr '[:upper:]' '[:lower:]'
Привет МИР
wiki
Приветствую! Спасибо за очень важное дополнение. Я добавил предупреждение в статью.