string - Bash 脚本 : find and replace uppercase character on a string

标签 string macos bash replace terminal

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

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/

相关文章:

java - 删除 String 中的 0 字节 (UTF-8) 字符

java - java中如何处理字节序列?

linux - 在文本文件中取第 n 列

macos - 如何让Apple X11成为默认的X11应用程序?

Linux Shell if 语句

linux - 在 Crontab 中运行多个相互依赖的 sas 程序

string - 加速计算字母表中没有长度 > 1 的重复子串的字符串数

java - 用 Java 将字符串写入文件并读取它们

macos - NSUserNotification 可定制应用程序图标?

ios - 新的 react-native ios 应用程序没有构建?