我试图利用在CSV的第一个字母,其排序是这样的:BASH - 让第一个字母大写
A23; asd23; sdg3
我要的是像一个输出这
A23; Asd23; Sdg3
所以第一个字符串应该是原样,但第二个和第三个应该有一个大写的第一个字母。我尝试过使用AWK和SED,但是我找不到合适的解决方案。有人可以帮忙吗?
我试图利用在CSV的第一个字母,其排序是这样的:BASH - 让第一个字母大写
A23; asd23; sdg3
我要的是像一个输出这
A23; Asd23; Sdg3
所以第一个字符串应该是原样,但第二个和第三个应该有一个大写的第一个字母。我尝试过使用AWK和SED,但是我找不到合适的解决方案。有人可以帮忙吗?
只是capitilise遵循分号的所有字母:
sed -e 's/;./\U&\E/g'
echo "a23;asd23;sdg3" | perl -ne 's/(?<=\W)(\w)/ uc($1) /gex;print $_'
a23;Asd23;Sdg3
击(4版本及以上)有一个“第一大写”操作符,${var^}
,但在这种情况下,我觉得这是更好地使用sed
:
sed -r 's/(^|;)(.)/\1\U\2/g' <<< "a23;asd23;sdg3"
感谢提到'$ {var ^}',它为我做了诡计! – lfxgroove 2013-04-10 16:23:37
$ 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
谢谢大家。 Bart Sas的答案符合我的需求。 :-) – fwaechter 2010-10-06 12:34:37