nev*_*int 40 unix linux bash sed
如何将单词的第一个字母替换为大写字母,例如
Trouble me
Gold rush brides
Run Code Online (Sandbox Code Playgroud)
成
Trouble Me
Gold Rush Brides
Run Code Online (Sandbox Code Playgroud)
tan*_*ens 70
这行应该这样做:
sed -e "s/\b\(.\)/\u\1/g"
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 22
使用awk:
awk '{for(i=1;i<=NF;i++){ $i=toupper(substr($i,1,1)) substr($i,2) }}1' file
Run Code Online (Sandbox Code Playgroud)
输出将是:
Trouble Me
Gold Rush Brides
Run Code Online (Sandbox Code Playgroud)
rek*_*sri 13
使用以下sed命令来大写每个单词的第一个字母.
echo -e "Trouble me \nGold rush brides" | sed -r 's/\<./\U&/g'
Run Code Online (Sandbox Code Playgroud)
产量
Trouble Me
Gold Rush Brides
Run Code Online (Sandbox Code Playgroud)
该-r开关通知sed使用扩展的正则表达式.该指令,sed然后告诉它" 小号地球与替换"(在s开头)的图案\<.与图案\U& 摹 lobally,即所有实例中的每一行(这是g在端改性).我们正在搜索的模式\<.是寻找单词边界(\<)后跟任何字符(.).替换模式是\U&,在\U指示sed要进行以下文字大写和&是一个代名词\0,它是指"一切是匹配的".在这种情况下,"匹配的所有内容"正是.匹配的内容,因为字符边界不包含在匹配中(相反,它们是锚点).什么.匹配是一个字符,所以这是什么,是上套管.
小智 5
我有撇号所以,解决第一个解决方案......
mike@mike-laptop3:~$ echo "BEST WESTERN PLUS BOB's INN" | tr "[A-Z]" "[a-z]" | sed -e "s/\b\(.\)/\u\1/g"
Run Code Online (Sandbox Code Playgroud)
贝斯特韦斯特普拉斯鲍勃旅馆
mike@mike-laptop3:~$ echo "BEST WESTERN PLUS BOB's INN" | tr "[A-Z]" "[a-z]" | sed "s/\( \|^\)\(.\)/\1\u\2/g"
Run Code Online (Sandbox Code Playgroud)
贝斯特韦斯特普拉斯鲍勃旅馆