我有一个这样的脚本:
#!/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 '{}'
谢谢