GNU 并行中的 --skip-first-line 不能与 --pipepart 一起使用?

GNU 并行中的 --skip-first-line 不能与 --pipepart 一起使用?

假设我有一个这样的文件:

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

相关内容