【发布时间】:2018-03-23 03:01:11
【问题描述】:
我们需要从多个文件中提取多个标签值。
我们有大约 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
任何帮助将不胜感激。
提前致谢, 维韦克
【问题讨论】:
-
不要选择
sed或awk,它们不是这项工作的正确工具。去一些像xmllint这样的xml感知工具,这是你不应该做的事情的一种方式,但对于小xml来说很好。declare $(awk -v FS='[<>]' 'length($3){print $2"="$3}' inputfile)然后echo $EmpName