sed regex-将标题大小写转换为camelCase
我有一些文本可能有“常规句子大小写”或“标题大小写文本”,我想把它们转换成标题大小写文本 以sed命令为例,这不是真正的字符串sed regex-将标题大小写转换为camelCase,regex,sed,Regex,Sed,我有一些文本可能有“常规句子大小写”或“标题大小写文本”,我想把它们转换成标题大小写文本 以sed命令为例,这不是真正的字符串 s/(^|\s)([A-Za-z])/\U\2/g 我得到输出 ThisIsNotTheRealString 如何使第一个T变为小写T?一种方法是使用两个不同的替换 $ s='This Is Not the Real string' $ echo "$s" | sed -E 's/^[A-Z]/\l&/; s/\s([A-Za-z])/\u\1/g' thi
s/(^|\s)([A-Za-z])/\U\2/g
我得到输出
ThisIsNotTheRealString
如何使第一个
T
变为小写T
?一种方法是使用两个不同的替换
$ 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
您可以将第一个大写字母与
^([A-Z])
匹配:
或
然后,将“组1”值改为小写,将第二个组(正如您已经做的)改为大写。看
详细信息
-匹配行首,然后将大写字母捕获到组1中^([[:upper:]])
-或|
-匹配一个或多个水平空白字符[[:blank:][]+
-然后将任何字母捕获到组2中([[:alpha:]])
\l\1
将组1中的值转换为小写,\U\2
将组2中的值转换为大写
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'