Gnu-Parallel
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
是否可以並行使用 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