使用 xargs 并行运行文件中的命令的单行程序

使用 xargs 并行运行文件中的命令的单行程序

我有一个这样的脚本:

#!/bin/csh

command 1 \
   -f \"input1\" \
   -l input2 -other_swithes1

command 2 \
   -f \"input1\" \
   -m input2 \
   -l input3 -other_swithes1

command 3 \
   -f \"input1\" \
   -l input2 -other_swithes2

所以有什么想法可以并行xargs运行这些命令。我尝试了各种变体,但都失败了。我真的不想写脚本,我认为使用 -d 开关和 -c 应该可以实现,但不确定。

为了进一步简化和扩展问题,我所拥有的是

cat file | grep -v "#.*" | sed -z 's/[\]\n/ /g' | xargs -I {} -n1 -P10 sh -c '{}'

虽然这可以完成工作,但有一个特殊的问题,那就是\"被删除。那么有什么线索可以解决这个问题吗?

答案1

使用 GNU Parallel,您可以执行以下操作:

parallel -d '\n\n' < file.csh

披露:我是这个工具的作者。

答案2

所以答案是:

cat file | grep -v "#.*" | sed -z 's/[\]\n/ /g' | sed -z 's/\"/\\\\"/g' | xargs -I {} -n1 -P10 sh -c '{}'

谢谢

相关内容