说我们有一个像这样的字符串:
doSomething()
我们想获得:do_something()
做这个的最好方式是什么?我已经阅读了关于字符串操作的 documentation 但我找不到正确的命令组合..
更新
在@anubhava 讨论之后,我找到了安装 gnu-sed 的解决方案:
brew install gnu-sed
然后我可以以这种方式运行脚本:s="doSomethingElse()"; gsed 's/[[:upper:]]/_\L&/g' <<< "$s"
输出: do_something_else() 最佳答案
使用 gnu-sed
您可以执行以下操作:
s='doSomethingElse()'
sed 's/[[:upper:]]/_\L&/g' <<< "$s"
do_something_else()
或者使用带有
non-gnu-sed (BSD)
的 tr
管道:sed 's/[[:upper:]]/_&/g' <<< "$s" | tr [[:upper:]] [[:lower:]]
do_something_else()
或使用
perl
:perl -pe 's/[[:upper:]]/_\L$&/g' <<< "$s"
do_something_else()
或使用
gnu-awk
:awk -v RS=[[:upper:]] -v ORS= '1; RT{printf "_%s", tolower(RT)}' <<< "$s"
do_something_else()
关于string - Bash 脚本 : find and replace uppercase character on a string,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33304620/