在 xml 文件中递归查找并替换电子邮件地址中的空格

在 xml 文件中递归查找并替换电子邮件地址中的空格

我们正在将旧环境迁移到新环境。旧环境中的电子邮件地址可能在前端或末尾有空格。然而,随着新的环境,这是不允许的。

示例文件:

<PEOPLE objectclass="[objPeople, objlwsnRMResource, top]" id="jdoe"> <ID><![CDATA[jdoe]]></ID> <ALLOWJOBQUEUE><![CDATA[N]]></ALLOWJOBQUEUE> <GROUP><![CDATA[ESS Employee]]></GROUP> <LASTNAME><![CDATA[Doe ]]></LASTNAME> <NAME><![CDATA[John Doe]]></NAME> <FIRSTNAME><![CDATA[John ]]></FIRSTNAME> <EMAIL><![CDATA[[email protected] ]]></EMAIL> </PEOPLE>

从这里你可以看到它有 xml 标签。 LASTNAME、FIRSTNAME 和 EMAIL 等标签中的某些位置存在空格。但是,我不希望名称之间有空格,例如名称标签“John Doe”中的空格。我想保持这样。

如何从文件中的某个标记名称后面取出尾随空格,并将该文件保存到位,或将其复制到另一个文件。

期望的结果:

<PEOPLE objectclass="[objPeople, objlwsnRMResource, top]" id="jdoe"> <ID><![CDATA[jdoe]]></ID> <ALLOWJOBQUEUE><![CDATA[N]]></ALLOWJOBQUEUE> <GROUP><![CDATA[ESS Employee]]></GROUP> <LASTNAME><![CDATA[Doe]]></LASTNAME> <NAME><![CDATA[John Doe]]></NAME> <FIRSTNAME><![CDATA[John]]></FIRSTNAME> <EMAIL><![CDATA[[email protected]]]></EMAIL> </PEOPLE> <PEOPLE objectclass="[objPeople, objlwsnRMResource, top]" id="jdoe2"> <ID><![CDATA[jdoe2]]></ID> <ALLOWJOBQUEUE><![CDATA[N]]></ALLOWJOBQUEUE> <GROUP><![CDATA[ESS Employee]]></GROUP> <LASTNAME><![CDATA[Doe]]></LASTNAME> <NAME><![CDATA[Jane Doe]]></NAME> <FIRSTNAME><![CDATA[Jane]]></FIRSTNAME> <EMAIL><![CDATA[[email protected]]]></EMAIL> </PEOPLE>

有人做过这样的事吗?

答案1

您可以使用sed删除序列前的空格]]

sed 's/ *]]/]]/g' file.xml

这里,正则表达式“ *]]”匹配任何空格(“ ”)零次或多次(“ *”),后跟文字“ ]]”。然后,任何此类匹配都将替换为“ ]]”。结果写入标准输出,您可以在其中以任何合适的方式重定向它。

如果您有合适的版本sed可以选择使用“ \s”而不是“ ”来表示任何空白字符(即不仅是空格,还包括制表符和其他非打印字符)。

相关内容