![使用 xargs 并行运行文件中的命令的单行程序](https://linux22.com/image/194750/%E4%BD%BF%E7%94%A8%20xargs%20%E5%B9%B6%E8%A1%8C%E8%BF%90%E8%A1%8C%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%91%BD%E4%BB%A4%E7%9A%84%E5%8D%95%E8%A1%8C%E7%A8%8B%E5%BA%8F.png)
我有一个这样的脚本:
#!/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 '{}'
谢谢