我有三种类型的字符串,我想在bash脚本中大写.我认为sed/awk是我最好的选择,但我不确定.考虑到以下要求,最好的方法是什么?
单词
例如 taco -> Taco
由连字符分隔的多个单词,
例如 my-fish-tacos -> My-Fish-Tacos
由下划线分隔的多个单词,
例如 my_fish_tacos -> My_Fish_Tacos
我有一个如下所示的列表:
david
Sam
toNy
3matt
5$!john
Run Code Online (Sandbox Code Playgroud)
我希望将每行中第一次出现的字母大写。因此,如果该行不以字母开头,则转到下一个可能的字母并将其变为大写。所以上面的例子应该输出:
David
Sam
ToNy
3Matt
5$!John
Run Code Online (Sandbox Code Playgroud)
我已尝试以下操作,但如果该行以数字或符号开头,则它不会将第一次出现的字母大写:
sed 's/^\(.\)/\U\1/' myfile.txt > convertedfile.txt
Run Code Online (Sandbox Code Playgroud)
我已经在这个网站上搜索了答案,它们都给出了与上面一行相同的问题