
請記住,我是 xml 和 npp 的新手..
我有一個包含數千筆記錄的大型 xml 文件,我需要更改行以使其在其他程式中工作。
我已經完成了大部分格式轉換,但現在遇到了問題。
我的 xml 現在是什麼樣子:
</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>
我想要什麼:
<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>
問題是</Value>
用兩個不同的東西替換,這取決於它是否在一串獨立的字串中。我遇到的第二個問題是替換一行的一部分並保留其餘部分 - 當我想保留的部分每行都有不同數量的字元時。
非常感謝所有幫助!
答案1
當它單獨存在於行中時替換</Value
為:</DPR>
找什麼:^ *</Value>
用。</DPR>
搜尋方式:正規表示式
之後,</Value>
除了那些與字串在一起的實例之外,不應該有任何其他實例,因此替換它們應該是微不足道的。但為了完整性...
[somestringhere]</Value
當->[somestringhere]</description>
單獨存在於行中時替換:
找什麼:^(<description>.+?)</Value>
用。$1</description>
搜尋方式:正規表示式
上面^
代表行的開頭,*
表示空格可能存在也可能不存在,.+?
表示此後字串第一次出現之前的任何字元(有關正則表達式的更多信息,請參閱此處),並且$1
在替換字串中將被替換為來源資料中括號內的匹配部分。
答案2
最簡單的是在 Perl 中使用正規表示式:
perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt