我有一些文件需要更改日志记录级别并尝试使用sed
<asyncLogger name="blabla" additivity="true" level="info" includeLocation="true">
</asyncLogger>
<asyncLogger name="blabla1" additivity="true" level="fine">
我厌倦了这个命令,但它减少了线的末尾。
sed 's/\(level="\).*/"\1\debug\"/' file.xml
我正在尝试使用level =“wildcard”并将其替换为level =“debug”和行的其余部分
答案 0 :(得分:2)
使用sed
...
那就是说,你的问题是.*
,因为它很贪婪。它吸收了剩余的线。
你可以这样做:
$ sed -E 's/(level=")[^"]*/\1debug/' file
<asyncLogger name="blabla" additivity="true" level="debug" includeLocation="true">
</asyncLogger>
<asyncLogger name="blabla1" additivity="true" level="debug">
答案 1 :(得分:0)
你需要使正则表达式不那么贪婪,因为你的。*会把所有东西都吃到行尾。
sed -r -e 's/(\<level *= *)["a-zA-Z"]+/\1"debug"/g'
答案 2 :(得分:0)
此类内容应将level="blah"
替换为level="debug"
sed -e 's/level="[^"]"/level="debug"/g' file.xml