请记住,我对 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