bash中有一个很好的功能,小写/大写:
$ string="A FEW WORDS"
$ echo "${string,}"
a FEW WORDS
$ echo "${string,,}"
a few words
$ echo "${string,,[AEIUO]}"
a FeW WoRDS
有人知道类似的方法将变量中每个单词的第1个字符设置为大写,其余部分设置为小写吗?
$ echo "${string,,[^.]}"
a few words
$ echo "${string,,[^]}"
A FEW WORDS
$ echo "${string,,.}"
A FEW WORDS
$ echo "${string,,^.}"
A FEW WORDS
$ echo "${string,,^?}"
A FEW WORDS
$ echo "${string,,?}"
a few words
答案 0 :(得分:2)
像GNU sed这样的文本处理工具可以帮到你:
$ sed -E 's/(\w)(\w*)/\U\1\L\2/g' <<<"$string"
A Few Words
这为每个单词捕获两个组(单词字符,后跟零个或多个单词字符)。替换使用\U
大写第一组,\L
小写其余组。
\w
是[[:alnum:]_]
的简写,即您的语言区域中的任何字母或数字加上_
。
答案 1 :(得分:1)
你可以试试这种方式
string="a few words"
set -- $string
string=$(echo "${@^}")
echo "$string"
输出
A Few Words
答案 2 :(得分:0)
如果将字符串传递给array
,则可以使用参数扩展。
这会将第一个char设置为大写:
strings="a few words"
arr=( $strings )
echo "${arr[@]^}"
输出:
A Few Words