所以我有一个相当于另一个命令输出的文件列表,它看起来像这样:
http://somewhere.com/foo1.xml.gz
http://somewhere.com/foo2.xml.gz
...
我需要通过xmlstarlet在每个文件中运行XML,所以我要做的是
... | xargs gzip -d | xmlstarlet ...
,只是我希望xmlstarlet在进入gzip的每一行中调用一次,而不是在附加到彼此的所有XML文档中调用。是否可以compose 'gzip -d' 'xmlstarlet ...'
,以便xargs为其每个复合函数提供一个参数? 最佳答案
为什么不读取文件并在shell中分别处理每一行呢?即
fileList=/path/to/my/xmlFileList.txt
cat ${fileList} \
| while read fName ; do
gzip -d ${fName} | xmlstartlet > ${fName}.new
done
我希望这能有帮助。