我正在编写一个简单的脚本,其中我转向true
文件中false
是否true
存在或反之亦然,如果false
文件中存在,详细信息这里。现在我想输出,更改后的值是什么,即如果我更改false
为true
它应该输出true
。现在我使用两个语句 -
grep "<active>false" settings.xml
grep "<active>true" settings.xml
但是它会打印<active>
输出(如预期的那样),但是有没有更好的方法来做到这一点?
附注-我使用<active>true
in 是grep
因为我的正则表达式是类型<active>([a-z]*)</active>
答案1
如果你使用 GNU grep
,你可以使用Perl 正则表达式并进行积极的后视断言:
grep -Po "(?<=<active>)(false|true)" settings.xml
这将仅输出false
或true
。<active>
当它后面跟着true
或时,将被匹配false
,但它不会包含在输出中。
但理想情况下,你应该使用基于 XML 的解析器,如uzsolt 的评论。