다음과 같은 파일이 있다고 가정해 보겠습니다.
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
파이프라인부분을 병렬로 사용하여 첫 번째 줄을 건너뛸 수 있습니까?
답변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