如何查找并替换特定行中的特定字符串

如何查找并替换特定行中的特定字符串

我开发了一个代码,可以查找并替换所有子目录下所有 xml 中的特定字符串。但我不希望所有发生的事情都被替换。在整个 xml 中,代码应该找到标签 xyz 并用 abc 替换该标签内的 xyz。 xml 中的其他“xyz”应保持原样。你能帮我解决这个问题吗?

谢谢...

答案1

您可以使用 sed 进行相同的操作

sed -i.bkp  5'i'"s/search/replace/"  inputfile
  • -i.bkp 备份为inpufile.bkp并编辑原始文件
  • 5'i' 转到第 5 行
  • s/ 搜索和替换

您也可以搜索特定单词“NAME”,并在同一行中搜索“RAM”并替换为“SHYAM”,请参见下面的示例

sed -e '/NAME/s/RAM/SHYAM/g' filename

参考关联

答案2

正如@donothingsucces所提到的,当您有标签 abc 内的标签 xyz 之类的要求时,通过简单的文本替换来修改 xml 通常是馊主意 除非您有非常严格的、已知的输入 xml 文件格式,但这种情况很少见。您需要一些能够理解 xml 的东西。

xml-sedxml-coreutils允许您在“echo-leaf”而不是一行上运行 sed 命令,这基本上意味着 sed 在带有 PATH 的 xml 片段上运行。所以你会有类似的东西

xml-sed 's/oldstring/newsting/' file.xml :/abc/xyz

Python lxml或者Perl XML::树枝如果您可以编写脚本的话就可以使用。

相关内容