BASH - сделать первую букву заглавной

Я пытаюсь сделать заглавной первую букву в CSV, который отсортирован следующим образом:

a23;asd23;sdg3

То, что я хочу, это вывод, подобный этому

a23;Asd23;Sdg3

Таким образом, первая строка должна быть как есть, но вторая и третья должны иметь первую букву с заглавной буквы. Я пробовал с AWK и SED, но не нашел правильного решения. Кто-нибудь может помочь?


person fwaechter    schedule 06.10.2010    source источник
comment
Спасибо вам всем. Ответ Барта Саса идеально подходит для моих нужд. :-)   -  person fwaechter    schedule 06.10.2010


Ответы (2)


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

sed -e 's/;./\U&\E/g'
person Bart Sas    schedule 06.10.2010
comment
Спасибо. Это было именно то, что я искал. :-) - person fwaechter; 06.10.2010
comment
Необходимо некоторое объяснение, поскольку регулярные выражения в sed имеют свои особенности. \U преобразует все символы справа в верхний регистр, & (вероятно) совпадает с \0, \E без необходимости останавливает преобразование. Вот ссылка на другой ответ, который объясняет это: stackoverflow.com/a/2762997/521032 - person Septagram; 03.06.2013

Bash (версия 4 и выше) имеет оператор "первый верхний регистр", ${var^}, но в этом случае я думаю, что лучше использовать sed:

sed -r 's/(^|;)(.)/\1\U\2/g' <<< "a23;asd23;sdg3"
person enzotib    schedule 06.10.2010
comment
Спасибо, что упомянули ${var^}, мне помогло! - person lfxgroove; 10.04.2013