【问题标题】:Extracting a specific file name from multiple .tar.gz files to build one .csv file从多个 .tar.gz 文件中提取特定文件名以构建一个 .csv 文件
【发布时间】:2016-01-08 12:08:44
【问题描述】:

另一个新手问题..请多多包涵。 我有多个 .tar.gz 文件,其中包含相同的 XX.log 文件(在每个 .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:错误不可恢复:现在存在。

有什么想法吗?

【问题讨论】:

    标签: linux perl csv


    【解决方案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} 似乎没有意义。如果你的意思是“追加”,那么重定向应该是>> 而不仅仅是>

    【讨论】:

    • 谢谢伙计!...但是当运行这个...使用参数 -zxf0 我得到以下错误: tar (child) : 0 No such file or directory....即使我知道文件在那里.....关于为什么该参数失败的想法?
    • 是的,抱歉,f 必须放在最后(或者更确切地说,在文件名 $t 之前)。我的错,我会解决的。
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2016-11-21
    • 2014-08-05
    相关资源
    最近更新 更多