【问题标题】:Direct xargs output to file, using multiple arguments使用多个参数将 xargs 输出直接输出到文件
【发布时间】:2014-07-18 15:26:58
【问题描述】:

给定一组文件,我需要根据任一输入文件名传递 2 个参数并将输出定向到新命名的文件。输入列表遵循定义的格式:S1_R1.txt、S1_R2.txt; S2_R1.txt、S2_R2.txt; S3_R1.txt、S3_R2.txt等。第一个数字加1,每个数字都有一个R1和对应的R2。

输出文件是每个 S# 对的组合,应分别命名,例如S1_interleave.txt、S3_interleave.txt、S3_interleave.txt等

以下作品打印到屏幕

找到 S*R*.txt -maxdepth 0 | xargs -n 2 python interleave.py

如何将输入文件名用作输出?

【问题讨论】:

    标签: xargs


    【解决方案1】:

    只是为了让它更有趣一点:让我们假设文件是​​ gzip 压缩的(就像配对末端读取通常那样),并且您也希望结果 gzip:

    parallel --xapply 'python interleave.py <(zcat {1}) <(zcat {2}) |gzip > {=1 s/_R1.txt.gz/_interleave.txt.gz/=}' ::: *R1.txt.gz ::: *R2.txt.gz
    

    您需要 GNU Parallel 的预发布版才能做到这一点http://git.savannah.gnu.org/cgit/parallel.git/snapshot/parallel-1a1c0ebe0f79c0ada18527366b1eabeccd18bdf5.tar.gz(或等待发布 20140722)。

    按照要求,它更简单(但您仍然需要预发布版):

    parallel --xapply 'python interleave.py {1} {2} > {=1 s/_R1.txt/_interleave.txt/=}' ::: *R1.txt ::: *R2.txt
    

    【讨论】:

    • 我已尝试编辑以删除 gzip 压缩文件,因为这些文件已被处理和过滤,为汇编程序做准备。您能否按要求添加解决方案?我的一个更正看起来很接近,但每次只能从每行交错 1 行。
    猜你喜欢
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多