我想改变以下模式:
getFoo_Bar
Run Code Online (Sandbox Code Playgroud)
至:
getFoo_bar
Run Code Online (Sandbox Code Playgroud)
(注意下面的b)
既不知道foo也不知道bar,替换模式是什么?
我开始写作了
sed 's/\(get[A-Z][A-Za-z0-9]*_\)\([A-Z]\)/\1
Run Code Online (Sandbox Code Playgroud)
但是我被困了:我想写"\ 2小写",我该怎么做?
也许sed不适应?
小智 34
要使用sed将getFoo_Bar更改为getFoo_bar:
echo "getFoo_Bar" | sed 's/^\(.\{7\}\)\(.\)\(.*\)$/\1\l\2\3/'
Run Code Online (Sandbox Code Playgroud)
大写和小写字母由以下处理:
\U 使所有文本都为正确的大写.\u 只使第一个字符为右大写.\L 使所有文本向右小写.\l仅使第一个字符出现在右下角.(注意它是一个小写字母L)该示例只是一种模式匹配方法,仅基于修改单个文本块.使用该示例,getFoo_BAr转换为getFoo_bAr,注意A未被更改.
str*_*ger 25
s/\(get[A-Z][A-Za-z0-9]*_\)\([A-Z]\)/\1\L\2/g
Run Code Online (Sandbox Code Playgroud)
测试:
$ echo 'getFoo_Bar' | sed -e 's/\(get[A-Z][A-Za-z0-9]*_\)\([A-Z]\)/\1\L\2/g'
getFoo_bar
Run Code Online (Sandbox Code Playgroud)