BASH - 制作第一个Letter大写字母

时间:2010-10-06 12:21:11

标签: bash string capitalization

我尝试将CS​​V中的第一个字母大写,其大小如下:

  

A23; asd23; sdg3

我想要的是像这样的输出

  

A23; Asd23; Sdg3

所以第一个String应该是原样的,但第二个和第三个字符串应该是大写的第一个字母。我试过AWK和SED,但我找不到合适的解决方案。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:17)

将所有以分号后面的字母标榜:

sed -e 's/;./\U&\E/g'

答案 1 :(得分:7)

Bash(版本4及更高版本)有一个“第一个大写”运算符${var^},但在这种情况下我认为最好使用sed

sed -r 's/(^|;)(.)/\1\U\2/g' <<< "a23;asd23;sdg3"

答案 2 :(得分:1)

echo "a23;asd23;sdg3" | perl -ne 's/(?<=\W)(\w)/ uc($1) /gex;print $_'

a23;Asd23;Sdg3

答案 3 :(得分:1)

$ 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