Найти в Дзене
Merion Academy

Изменение регистра символов в командной строке Linux

Оглавление

Преобразование текста между прописными и строчными буквами может быть очень утомительным, особенно если вы хотите избежать непреднамеренных ошибок в написании. К счастью, Linux предоставляет несколько команд, которые могут сделать эту работу очень простой.

 Изменение регистра символов в командной строке Linux
Изменение регистра символов в командной строке Linux

Существует много способов изменить текст в командной строке Linux с нижнего на верхний регистр и наоборот. На самом деле, у вас есть впечатляющий набор команд на выбор. В этой статье рассматриваются наиболее лучшие команды для работы.

Использование tr

Команда tr (translate) является одной из самых простых в использовании в командной строке или скрипте. Если у вас есть строка, которая должна быть прописной, вы просто передаете ее через команду tr, как в примере:

$ echo Hello There | tr [:lower:] [:upper:]
HELLO THERE

Ниже приведен пример использования такого рода команд в скрипте, когда необходимо, чтобы весь текст, добавляемый в файл, находится в верхнем регистре:

#!/bin/bash
echo -n "Enter department name: "
read dept
echo $dept | tr [:lower:] [:upper:] >> depts.

Перестановка местами параметров [: upper:] [: lower:] переводит текст в нижний регистр:

echo $dept | tr [:upper:] [:lower:] >> depts.

Аналогично, вы можете использовать эту команду для преобразования символов A-Z в a-z:

echo $dept | tr a-z A-Z >> depts.

Использование awk

Команда awk позволяет сделать то же самое, что и команда tr. Но здесь применяются опции toupper и tolower. Команда в сценарии, показанном в предыдущем примере, может быть выполнена следующим образом:

echo $dept | awk '{print toupper($0)}' >> depts.

Обратное переключение на нижний регистр будет выглядеть следующим образом:

echo $dept | awk '{print tolower($0)}' >> depts.

Использование sed

Команда sed (stream editor) также отлично справляется с переключением между верхним и нижним регистром. Эта команда будет иметь тот же эффект, что и у двух предыдущих, показанных выше.

echo $dept | sed 's/[a-z]/\U&/g' >> depts.

Для переключения с верхнего на нижний регистр просто необходимо заменить символ U в конце строки символом L.

echo $dept | sed 's/[A-Z]/\L&/g' >> depts.

Управление текстом в файле

Awk и sed также позволяют изменять регистр текста для целых файлов. Для изменения регистра текста целого файла просто выполните такую команду с указанным именем файла:

$ awk '{print tolower($0)}' depts
finance
billing
bookkeeping

Если вы хотите перезаписать содержимое файла, а не просто отображать его содержимое в нижнем регистре, вам необходимо сделать это:

$ awk '{print tolower($0)}' depts > depts-
$ mv depts- depts

Однако, внося изменения с помощью команды sed, можно избежать последний шаг awk, потому что sed может редактировать файл «на месте», как показано ниже в примере, оставляя файл нетронутым, но текст преобразовался в нижний регистр:

$ sed 's/[A-Z]/\L&/g' depts.

Изменение регистра только первой буквы.

Чтобы сделать прописными буквами только первые буквы слов в строках, выполните следующие команды:

$ echo design \& engineering| sed -e "s/\b\(.\)/\u\1/g"
Design & Engineering

Эта команда преобразует первые буквы в заглавные, и не изменит остальные буквы.