arm*_*dfp 18 linux bash camelcasing
有没有办法转换这样的东西:
MyDirectoryFileLine
Run Code Online (Sandbox Code Playgroud)
至
my-directory-file-line
Run Code Online (Sandbox Code Playgroud)
我找到了一些方法将所有字母转换为大写或小写,但不是这样; 有任何想法吗?
dog*_*ane 26
您可以使用s/\([A-Z]\)/-\L\1/g查找大写字母并用短划线替换它,它是小写字母.但是,这会在行的开头给你一个破折号,所以你需要另一个sed表达式来处理它.
这应该工作:
sed --expression 's/\([A-Z]\)/-\L\1/g' \
--expression 's/^-//' \
<<< "MyDirectoryFileLine"
Run Code Online (Sandbox Code Playgroud)
4nd*_*rew 11
我建议使用sed来做到这一点:
NEW=$(echo MyDirectoryFileLine \
| sed 's/\(.\)\([A-Z]\)/\1-\2/g' \
| tr '[:upper:]' '[:lower:]')
Run Code Online (Sandbox Code Playgroud)
UPD我忘记转换为小写,更新代码
echo MyDirectoryFileLine | perl -ne 'print lc(join("-", split(/(?=[A-Z])/)))'
Run Code Online (Sandbox Code Playgroud)
版画 my-directory-file-line