使用sed将bash变量中的单词大写

Mer*_*kos 1 regex bash shell sed

我是全新的shell脚本(实际上只有三天:))所以不要拍我.. !!

在我的脚本中,我有一个看起来像这样的代码:

string="this-is-my-string"
Run Code Online (Sandbox Code Playgroud)

我喜欢修改变量的内容,以便变成这样:

string="This Is My String"
Run Code Online (Sandbox Code Playgroud)

我不寻找将原始字符串修改为修改版本的正则表达式.我已经在这里找到了解决方案.

我正在寻找的是如何使用sed命令修改变量内的文本.说实话,我真的不知道是否有可能sed.如果不能进行修改,sed是否还有其他方法可以达到相同的效果?

Arj*_*Dan 6

string=$(sed 's/^./\u&/; s/-\(.\)/ \u\1/g' <<< $string)
Run Code Online (Sandbox Code Playgroud)

例:

sdlcb@Goofy-Gen:~/AMD$ cat File
#!/bin/bash

string="this-is-my-string"
string=$(sed 's/^./\u&/; s/-\(.\)/ \u\1/g' <<< $string)    
echo "$string"

AMD$ ./File
This Is My String
Run Code Online (Sandbox Code Playgroud)

s/^./\u&/=>将第一个字符\u大写为大写.&=>匹配的模式.

s/-\(.\)/ \u\1/g=>替代- followed by characterspace followed by uppercase of the character.( )用于分组模式和\1=>第一组,在这种情况下只存在1个这样的组.