假设我们有一个像这样的字符串:
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)
pipe with 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/