BASH - сделать первую букву заглавной - PullRequest
9 голосов
/ 06 октября 2010

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

a23; asd23; sdg3

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

a23; Asd23; Sdg3

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

Ответы [ 4 ]

17 голосов
/ 06 октября 2010

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

sed -e 's/;./\U&\E/g'
7 голосов
/ 06 октября 2010

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

sed -r 's/(^|;)(.)/\1\U\2/g' <<< "a23;asd23;sdg3"
1 голос
/ 06 октября 2010
$ var="a23;asd23;sdg3"
$ echo $var | awk -F";" '{for(i=2;i<=NF;i++) $i=toupper(substr($i,i,1))substr($i,1) }1' OFS=";"
a23;Sasd23;Gsdg3
1 голос
/ 06 октября 2010
echo "a23;asd23;sdg3" | perl -ne 's/(?<=\W)(\w)/ uc($1) /gex;print $_'

a23;Asd23;Sdg3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...