如何在不同路径的多个文件上xmlstarlet?

时间:2016-07-28 15:55:44

标签: xml linux unix xmlstarlet

我正在使用C Shell。

我的工作目录:

cd /mnt/FusionOATS/CRM/Research/rys/

My Current Working xmlstarlet命令(对2个文件执行xmlstarlet操作,这些文件直接位于工作目录下,结果粘贴在输出文本文件中):

foreach xmlfile ( ResultReport1.xml ResultReport2.xml )
xmlstarlet sel -t -m '//RESULT_STEP' -v '@time_stamp' -o '|' -v '@step_name' --nl "$xmlfile" >> /scratch/rys/view_storage/outroo3.txt
end

现在我需要处理不同路径的文件,如下所示:

  • 工作目录/ ResultReport1.xml

  • 工作目录/ ResultReport.xml

  • 工作目录/ Test3 / ResultReport3.xml

我试过了:

foreach xmlfile ( ResultReport1.xml ResultReport2.xml /Test3/ResultReport3.xml )
xmlstarlet sel -t -m '//RESULT_STEP' -v '@time_stamp' -o '|' -v '@step_name' --nl "$xmlfile" >> /scratch/rys/view_storage/outroo4.txt
end

但是,得到以下错误:

无法加载外部实体“/Test3/ResultReport2.xml”

我可以使用xmlstarlet执行此操作吗?请建议。感谢。

1 个答案:

答案 0 :(得分:0)

只需删除文件路径开头的斜杠即可解决错误:

这有效:

foreach xmlfile ( ResultReport1.xml ResultReport2.xml Test3/ResultReport2.xml )
xmlstarlet sel -t -m '//RESULT_STEP' -v '@time_stamp' -o '|' -v '@step_name' --nl "$xmlfile" >> /scratch/rys/view_storage/outroo4.txt
end