我想在单个匹配中将第一行中的所有字符串替换为 DISPLAY="TRUE" 到 DISPLAY="FALSE",反之亦然。
示例:来自:
<SYN DISPLAY="TRUE" SEARCH="TRUE" CLASSIFY="TRUE">Appels</SYN>
<SYN DISPLAY="FALSE" SEARCH="FALSE" CLASSIFY="TRUE">103.103117.1031171012</SYN>
至
<SYN DISPLAY="FALSE" SEARCH="TRUE" CLASSIFY="TRUE">Appels</SYN>
<SYN DISPLAY="TRUE" SEARCH="FALSE" CLASSIFY="TRUE">103.103117.1031171012</SYN>
请注意,相应行中的所有其他字符串<SYN DISPLAY="TRUE" or <SYN DISPLAY="FALSE"
可能不同。
要求是仅在两行出现时匹配和替换(如上所示),即<SYN DISPLAY="TRUE"
在第一行和<SYN DISPLAY="FALSE"
第二行时。不应替换具有以下示例模式的单行。
<DIMENSION_NODE>
<DVAL TYPE="EXACT">
<DVAL_ID ID="4294960976"/>
<SYN DISPLAY="TRUE" SEARCH="TRUE" CLASSIFY="TRUE">2</SYN>
</DVAL>
</DIMENSION_NODE>
```
我尝试使用 sed,但是,我无法让它工作。
sed -E 's/(<SYN DISPLAY=\")TRUE(\".+\s+<SYN DISPLAY=\")FALSE(\".+<\/SYN>)/\1FALSE\2TRUE\3/' test.xml
请求专家帮助使其工作:)