regex - 使用 sed 在 '.' 之前用 '_' 替换所有出现的 '='

标签 regex linux bash unix sed

我有一个属性文件如下:

build.number=153013
db.create.tablespace=0
db.create.user=0
db.create.schema=0
upgrade.install=1
new.install=0
configure.jboss=0
configure.jbosseap=false
configure.weblogic=1
configure.websphere=0

我需要将这些变量导入到 shell 脚本中。如你所知, '。'不是在 Linux 中用作变量的有效字符。我将如何使用 sed 替换所有出现的“。”在 '=' 和 '_' 之前。我已经替换了所有出现的“。”但有些属性的值包含“.”。我不想修改。

感谢任何帮助!

谢谢!

最佳答案

你可以使用

sed -e ':b; s/^\([^=]*\)*\./\1_/; tb;'

只要匹配成功,它就会将 stringWithoutEquals. 替换为 stringWithoutEquals_。实际上,这会将 = 之前的所有 . 替换为 _.

关于regex - 使用 sed 在 '.' 之前用 '_' 替换所有出现的 '=',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26877805/

相关文章:

java - 判断string是否可以转为int数组

css - 用于在 css 文件中查找重复的十六进制值的正则表达式

linux - 在 Linux/Ubuntu 上安装 boost

java - 使用 Java 正则表达式匹配多个模式

sql - 使用RegEx在Notepad++中一键执行多个查找/替换命令

MySQL 通过 Hibernate 在 Linux 中区分大小写

linux - 运行进程。为什么显示 uid 号而不是用户名?

bash脚本: Delete characters in string up to and including a phrase?

bash - 在 Windows 上的 Ubuntu 上的 Bash 中复制粘贴

linux - 为什么bashrc中的这个功能不起作用?