【发布时间】:2015-07-25 15:01:09
【问题描述】:
我有一个在普通 STDOUT 中嵌入了 xml 的日志文件,如下所示:
2015-05-06 04:07:37.386 [INFO]Process:102 - Application submitted Successfully ==== 1
<APPLICATION><FirstName>Test</FirstName><StudentSSN>123456789</StudentSSN><Address>123 Test Street</Address><ParentSSN>123456780</ParentSSN><APPLICATIONID>2</APPLICATIONID></APPLICATION>
2015-05-06 04:07:39.386 [INFO] Process:103 - Application completed Successfully ==== 1
2015-05-06 04:07:37.386 [INFO]Process:104 - Application submitted Successfully ==== 1
<APPLICATION><FirstName>Test2</FirstName><StudentSSN>323456789</StudentSSN><Address>234 Test Street</Address><ParentSSN>123456780</ParentSSN><APPLICATIONID>2</APPLICATIONID></APPLICATION>
2015-05-06 04:07:39.386 [INFO] Process:105 - Application completed Successfully ==== 1
我的目标是解析此文件并将任何出现的个人数据替换为 ***。因此,上面脚本之后的期望输出应该是:
2015-05-06 04:07:37.386 [INFO]Process:102 - Application submitted Successfully ==== 1
<APPLICATION><FirstName>***</FirstName><StudentSSN>***</StudentSSN><Address>*******</Address><ParentSSN>*********</ParentSSN> <APPLICATIONID>2</APPLICATIONID></APPLICATION>
2015-05-06 04:07:39.386 [INFO] Process:103 - Application completed Successfully ==== 1
2015-05-06 04:07:37.386 [INFO]Process:104 - Application submitted Successfully ==== 1
<APPLICATION><FirstName>***</FirstName><StudentSSN>*********</StudentSSN><Address>*****</Address><ParentSSN>*********</ParentSSN> <APPLICATIONID>2</APPLICATIONID></APPLICATION>
2015-05-06 04:07:39.386 [INFO] Process:105 - Application completed Successfully ==== 1
提前谢谢你。
【问题讨论】:
-
xml 中的问题是您的拼写错误,还是来自生成日志的应用程序?
-
@Guido 标签中的任何问题(例如空格)都是错字。但是 xml 是在日志文件中生成的,就像我在该行的起始标记上方是“应用程序”一样,并以此结束。这有意义吗?
-
老实说,不;您的
FirstName元素未正确关闭,applicationid元素也是如此:它是这样生成的,即。它是无效的 xml,或者它只是在您发布的 sn-p 中(并且日志文件中的 xml 被认为是有效的 xml)? -
好的,那你为什么不用一些东西(grep 或其他东西)过滤日志文件,只为 xml 行,然后将它传送到你已经制作的 perl 脚本?
-
@guido,这是我的示例 perl 脚本 pastie.org/10187948