Regex Sed,通配符在“之间”&引用;
我有一些文件需要更改日志记录级别并尝试使用sedRegex Sed,通配符在“之间”&引用;,regex,bash,shell,sed,Regex,Bash,Shell,Sed,我有一些文件需要更改日志记录级别并尝试使用sed <asyncLogger name="blabla" additivity="true" level="info" includeLocation="true"> </asyncLogger> <asyncLogger name="blabla1" additivity="true" level="fine"> 我试图对level=“wildcard”进行细化,并用level=“de
<asyncLogger name="blabla" additivity="true" level="info" includeLocation="true">
</asyncLogger>
<asyncLogger name="blabla1" additivity="true" level="fine">
我试图对level=“wildcard”进行细化,并用level=“debug”替换它,而这行的其余部分用
sed
修改xml几乎从来都不是一个好主意
也就是说,您的问题是*
,因为它是贪婪的。它吸走了线路的其余部分
sed 's/\(level="\).*/"\1\debug\"/' file.xml
你可以做:
$ sed -E 's/(level=")[^"]*/\1debug/' file
<asyncLogger name="blabla" additivity="true" level="debug" includeLocation="true">
</asyncLogger>
<asyncLogger name="blabla1" additivity="true" level="debug">
$sed-E的/(level=“)[^”]*/\1debug/”文件
您需要使正则表达式不那么贪婪,因为您的。*将所有内容都吃到了最后
sed -r -e 's/(\<level *= *)["a-zA-Z"]+/\1"debug"/g'
sed-r-e的/(\类似的东西应该将
level=“blah”
替换为level=“debug”
完美地工作:)如果没有sed,您将使用什么来修改XML?使用适当的XML解析器。Python、Perl、Ruby、PHP、Java、Javascript等
sed -e 's/level="[^"]"/level="debug"/g' file.xml