gpt4 book ai didi

linux - linux中如何从多个xml文件中提取多个标签值

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:37 24 4
gpt4 key购买 nike

我们需要从多个文件中提取多个标签值。

我们有大约 1000 个文件,其数据类似于:

<Employee>
<Id>432361</Id>
<EmpName>Stuart</EmpName>
<SidNumber>0251115</SidNumber>
<CreatedUtc>2016-11-14T22:27:53.477+08:00</CreatedUtc>
<EpisodeId>682082</EpisodeId>
<CorrelationId>323A6C86-76AA-E611-80DA-005056B46023</CorrelationId>
</Employee>

我们需要将所有文件中的 EmpName、SidNumber 和 EpisodeId 提取到一个文件中。例如,我们可以一次获得一个值。使用命令:

nawk -F'[<>]' '/<EpisodeId>/{print $3}' *.dat

但是我们需要获取每个文件的多个标签。输出格式应该类似于

EmpName Stuart SidNumber 0251115 EpisodeId 682082
EmpName Stuart SidNumber 0251115 EpisodeId 682082

或至少以空格分隔的值

Stuart 0251115 682082
Stuart 0251115 682082

如有任何帮助,我们将不胜感激。

提前致谢,维维克

最佳答案

试试这个 -(创建了两个示例文件 f1.txt f2.txt)

$ head f?.txt
==> f1.txt <==
<Employee>
<Id>432361</Id>
<EmpName>Stuart</EmpName>
<SidNumber>0251115</SidNumber>
<CreatedUtc>2016-11-14T22:27:53.477+08:00</CreatedUtc>
<EpisodeId>682082</EpisodeId>
<CorrelationId>323A6C86-76AA-E611-80DA-005056B46023</CorrelationId>
</Employee>

==> f2.txt <==
<Employee>
<Id>432361</Id>
<EmpName>vipin</EmpName>
<SidNumber>0251117</SidNumber>
<CreatedUtc>2016-12-14T22:27:53.477+08:00</CreatedUtc>
<EpisodeId>682082</EpisodeId>
<CorrelationId>323A6C86-76AA-E611-80DA-005056B46023</CorrelationId>
</Employee>

正在处理...

$ for i in f?.txt;do awk -F'[<>]' '/EmpName|SidNumber|EpisodeId/{printf $3OFS} END {print ""}' $i;done
Stuart 0251115 682082
vipin 0251117 682082

为了正确格式化输出 -

$ for i in f?.txt;do awk -F'[<>]' '/EmpName|SidNumber|EpisodeId/{printf $3OFS} END {print ""}' $i;done|column -t
Stuart 0251115 682082
vipin 0251117 682082

如果您没有可用的列 cmd,您可以尝试以下 cmd -

for i in f?.txt;do awk -F'[<>]' '/EmpName|SidNumber|EpisodeId/{printf "%-10s", $3OFS} END {print ""}' $i;done
Stuart 0251115 682082
vipin 0251117 682082

在 awk 的 printf 函数中,我们可以格式化列值。

关于linux - linux中如何从多个xml文件中提取多个标签值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43198404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com