我正在尝试替换配置文件中的一些路径。为此,我尝试使用 sed。
我的文件看起来像这样:
-Djava.util.logging.config.file=/tmp/tmp/tmp/config bla.bla
我想替换 /tmp/tmp/tmp/config
并保持 bla.bla 不变。
根据http://regexpal.com/和 http://regexr.com?362qc我应该使用
sed -e 's/logging.config.file=[^\s]+/logging\.config\.file\=\/new/g' 文件
但是它不起作用。
最佳答案
这会将 /tmp/tmp/...
替换为 aaa
:
$ sed 's/\(.*=\)[^ ]* \(.*\)/\1 aaa \2/g' <<< "-Djava.util.logging.config.file=/tmp/tmp/tmp/config bla.bla"
-Djava.util.logging.config.file= aaa bla.bla
它将 =
之前的任何内容“保存”在 \1
中。然后将所有内容提取到一个空间中。最后将字符串的其余部分“保存”在 \2
中。
通过回显 \1
+ "new string"+ \2
来完成替换。
关于regex - sed 替换所有字符直到第一个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402581/