说我们有一个像这样的字符串:

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/

10-13 04:35