如何在大量文件中执行复杂的查找和替换(删除)操作?

如何在大量文件中执行复杂的查找和替换(删除)操作?

我的问题不仅仅是必须在多个文件中执行此操作,而且我需要查找的内容非常复杂。升级我的应用程序的 .NET 版本后,一些资源文件的某些部分已经重复,除了程序集版本号之外的所有内容已增加。

这是一个示例资源文件,它可以演示我的问题:

<data attribute="value" >
    <value>Version="dot_net_4_assembly_version_number", <!--This element is fine--></value>
</data>

<data attribute="anotherValue" >
    <value>Version="dot_net_2_assembly_version_number", "identical_data_here"</value>
</data>

<data attribute="anotherValue" >
    <value>Version="dot_net_4_assembly_version_number", "identical_data_here"</value>
</data>

所以我需要的是某种工具,或者某种命令脚本或某种东西(如果可能的话),它将搜索每个文件,并确定 xml 元素中的所有值是否相同,除了数字与Version=....NET 2 和 4 版本匹配,然后删除 xml 元素的 .NET 2 版本。

如何实现这一点?是否需要某种 bash 命令脚本来执行此操作?(此外,希望我在正确的地方提出这个问题,如果没有,请告诉我)

答案1

您可以使用正则表达式和(例如)Notepad++ 执行相当复杂的查找和替换操作。但是,当您尝试更改的文件没有以完全相同的方式保存的项目时,这可能不可行。

就我个人而言,由于文件是 XML,我只需使用编程环境(就像您习惯的那样)来编写一个问题来读取和写入 XML 文件。这可能比编写复杂的正则表达式要容易得多。

或者,您可以使用 XML->XSLT 来读取文件并转换它们,但我会选择我最熟悉的选项。

相关内容