【发布时间】:2017-09-09 09:16:28
【问题描述】:
给定一个任务,其中包含多个通过管道组合的命令:
cat input/file1.json | jq '.responses[0] | {labelAnnotations: .labelAnnotations}' > output/file1.json
现在,有数千个输入 JSON 文件,我喜欢利用 GNU Parallel 来并行化所有进程。我怎么能那样做?像这样?
parallel cat {} | jq '...' > output/{./} ::: input/*.json
注意:如果jq 的过滤器中有管道,情况会更加复杂......
【问题讨论】:
-
尝试在
|和<前面加上一个反斜杠来引用它们,然后使用parallel --dry-run ...看看它在不做任何事情的情况下会做什么。 -
太棒了!如果
jq的过滤器里面有管道怎么办? -
您的
jq命令已经在单引号内,所以我认为它们应该没问题。 -
不。它不起作用。得到了这样的东西
/bin/bash: {labelAnnotations:: command not found -
你能把
jq周围的单引号换成双引号吗?
标签: jq gnu-parallel