从多个.tar.gz文件中提取特定文件名以构建一个.csv文件

时间:2015-10-10 17:35:11

标签: linux perl csv

另一个新手问题..请耐心等待我。 我有一个包含相同XX.log文件的多个.tar.gz文件(在每个.tar.gz文件中命名相同)。 我需要从每个.tar.gz文件中仅提取特定的XX.log文件,然后将它们附加到名为DataByDate.csv的列表文件中

我尝试了多种方法在一行中完成此任务: zcat /tmp/jhoney/DATA.2015-10-09* | tar --extract --file = XX.log | perl -lne'/.{0,0}2015-10-09.{0,30}/ $$ print $&' > /tmp/jhoney/DataByDate.csv

这会返回错误: tar:XX.log:无法打开:没有这样的文件或目录 tar:错误无法恢复:现在存在。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要阅读man tar。我想你需要更像这样的东西:

for t in /tmp/jhoney/DATA.2015-10-09*;do tar -zxOf $t XX.log | 
  perl -lne '/.{0,0}2015-10-09.{0,30}/ && print $&';done >/tmp/jhoney/DataByDate.csv

此外,{0,0}似乎没有意义。如果您真的想要"追加",重定向可能应该是>>而不仅仅是>

相关问题