Gnu-Parallel

GNU 並行中的 –skip-first-line 不能與 –pipepart 一起使用?

  • October 11, 2021

假設我有一個這樣的文件:

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

是否可以並行使用 pipepart 跳過第一行?

我找到了一個使用替換字元串 {#} aka 序列號的解決方案。第一個標頭總是在序列 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

該錯誤已在 Git 中修復。

https://git.savannah.gnu.org/cgit/parallel.git/snapshot/parallel-master.tar.gz

parallel -a test.txt -k --pipepart --skip-first-line cat

引用自:https://unix.stackexchange.com/questions/672450