这个问题在这里已经有了答案:




8年前关闭。






我的值(value)为:james,adam,john 我正在尝试将其设为 James,Adam,John(每个名称的第一个字符应为大写)。

echo 'james,adam,john' | sed 's/\<./\u&/g'

并非在所有系统中都有效。在一个系统中它显示正常......但在另一个系统中不正常......
A="james adam john"
B=( $A )
echo "${B[@]^}"

它抛出了一些语法错误......所以,我正在通过一个很长的查询 sing while 循环来完成它,这太冗长了。
有没有捷径可以做到这一点?

最佳答案

有很多方法可以定义“名称的开头”。此方法选择单词边界后的任何字母并将其转换为大写。作为副作用,这也适用于诸如“Sue Ellen”或“Billy-Bob”之类的名字。

echo "james,adam,john" | perl -pe 's/(\b\pL)/\U$1/g'

关于perl - Shell脚本中字符的小写到大写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12287162/

10-11 23:17
查看更多