9

我尝试将 CSV 中的第一个字母大写,排序如下:

a23;asd23;sdg3

我想要的是这样的输出

a23;Asd23;Sdg3

所以第一个字符串应该是原样,但第二个和第三个应该有一个大写的第一个字母。我尝试使用 AWK 和 SED,但没有找到正确的解决方案。有人可以帮忙吗?

4

4 回答 4

17

只需将分号后面的所有字母大写即可:

sed -e 's/;./\U&\E/g'
于 2010-10-06T12:27:13.020 回答
7

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

sed -r 's/(^|;)(.)/\1\U\2/g' <<< "a23;asd23;sdg3"
于 2010-10-06T12:27:38.447 回答
1
echo "a23;asd23;sdg3" | perl -ne 's/(?<=\W)(\w)/ uc($1) /gex;print $_'

a23;Asd23;Sdg3
于 2010-10-06T12:26:36.857 回答
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
于 2010-10-06T12:28:37.617 回答