我有一些文本,可能是“普通句子大小写”或“标题大小写文本”,我想将它们转换为titleCaseText。
以sed命令为例,假设有字符串This Is Not the Real string
s/(^|\s)([A-Za-z])/\U\2/g
我收到输出
ThisIsNotTheRealString
如何将第一个
T
改为小写的 t
?^([A-Z])
匹配第一个大写字母:sed -E 's/^([A-Z])|[[:blank:]]+([A-Za-z])/\l\1\U\2/g'
或者
sed -E 's/^([[:upper:]])|[[:blank:]]+([[:alpha:]])/\l\1\U\2/g'
一种方法是使用两个不同的替换
$ s='This Is Not the Real string'
$ echo "$s" | sed -E 's/^[A-Z]/\l&/; s/\s([A-Za-z])/\u\1/g'
thisIsNotTheRealString
$ s='Regular sentence case'
$ echo "$s" | sed -E 's/^[A-Z]/\l&/; s/\s([A-Za-z])/\u\1/g'
regularSentenceCase
如果您输入的字母大小写不一致:
$ s='ReGulAr sEntEncE cASe'
$ echo "$s" | sed -E 's/^[a-zA-Z]+/\L&/; s/\s([A-Za-z]+)/\L\u\1/g'
regularSentenceCase