假设我有一个这样的文件:
COLUMN
1
2
3
4
如果我想使用 GNU 并行运行和处理它,但跳过第一行(又名标题),我尝试了以下方法:
parallel -a test.txt -k --pipepart --will-cite --skip-first-line cat
但是,--skip-first-line 没有按我的预期工作:
parallel -a test.txt -k --pipepart --will-cite --skip-first-line cat
COLUMN
1
2
3
4
我期望的是这样的:
1
2
3
4
是否可以并行使用 pipelinepart 跳过第一行?
答案1
该错误已在 Git 中修复。
https://git.savannah.gnu.org/cgit/parallel.git/snapshot/parallel-master.tar.gz
parallel -a test.txt -k --pipepart --skip-first-line cat
答案2
我找到了使用替换字符串 {#} 又名序列号的解决方案。第一个标头始终位于序列 1 中,因此我们在解析它时可以特殊对待它。例如使用脚本:
#!/bin/bash
_test()
{
if [[ "$1" == 1 ]]; then
:
else
cat
fi
}
export -f _test
parallel -a demo.txt -k --pipepart --will-cite _test {#}
运行此脚本会产生预期结果:
1
2
3
4