Делаем заглавной первую букву каждой строки в выводе Bash скрипта


В этой заметке хочу рассмотреть варианты вывода списков в bash с изменением первой буквы/символа на заглавную.

Буду использовать пример вывода установленных версий Postfix и Dovecot в CentOS:

Пример №1: Циклы for.

В этом примере создается новая переменная $newf, которая состоит из 2-х частей. В первой части с помощью утилиты tr меняется отрезок с 0-го символа по первый с нижнего регистра на верхний.

for f in $(rpm -qa |grep "dovecot\|postfix" |sed 's/-/\ v\./g' |awk '{print $1"_"$2}'); 
do 
     newf=$(tr '[:lower:]' '[:upper:]' <<< ${f:0:1})${f:1};
     echo $newf |sed 's/_v/ v/g'; 
done

Немного видоизмененный:

for f in $(rpm -qa |grep "dovecot\|postfix"); 
do 
     tf=$(echo $f |sed 's/-/\ v\./g' |awk '{print $1" "$2}')
     newf=$(tr '[:lower:]' '[:upper:]' <<< ${tf:0:1})${tf:1};
     echo $newf |sed 's/_v/ v/g'; 
done

Пример №2: Цикл while.

Та же логика что и в первом примере, только цикл другой.

while read -r line; 
do
     f=$(printf '%s\n' "$line"); 
     newf=$(tr '[:lower:]' '[:upper:]' <<< ${f:0:1})${f:1}; echo $newf;
done <<< "$(rpm -qa |grep "dovecot\|postfix" |sed 's/-/\ v\./g'|awk '{print $1" "$2}')"
Share Button
(Visited 287 times, 1 visits today)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.