Преобразование текста между прописными и строчными буквами может быть очень утомительным, особенно если вы хотите избежать непреднамеренных ошибок в написании. К счастью, 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
Эта команда преобразует первые буквы в заглавные, и не изменит остальные буквы.