【问题标题】:Unix loop over output of cutUnix循环输出cut
【发布时间】:2017-07-22 23:15:39
【问题描述】:

我有一堆slurm 作业,它们会生成这种格式的标准输出和错误文件:

<string>.<string>.<string>.<job_id>.ERR

其中job_idslurm 分配的作业ID。

所以要获得这些工作 ID,我可以:

cut -f 4 -d "." *.ERR

我想将此命令的输出通过管道传送到一个循环,该循环将运行 sacct -j &lt;job_id&gt;grep 哪些作业已失败,使用:

sacct -j <job_id> | grep "FAILED"

这可以在一个命令中完成吗?

【问题讨论】:

    标签: bash loops unix grep


    【解决方案1】:

    您可以使用带有进程替换的 Bash read 循环:

    while read -r job_id; do
      sacct -j "$job_id" | grep "FAILED"
    done < <(cut -f4 -d. *.ERR)
    

    你也可以使用xargs,更简洁:

    cut -f4 -d. *.ERR | xargs -n 1 sacct -j | grep "FAILED"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2018-02-23
      • 1970-01-01
      相关资源
      最近更新 更多