파일 입력 매개변수가 있는 GNU 병렬 쌍 매개변수

파일 입력 매개변수가 있는 GNU 병렬 쌍 매개변수

여러 줄이 있는 파일이 있고 각 줄에는 탭 구분 기호와 병렬로 전달하려는 매개 변수가 있습니다.

이 스크립트를 실행합니다.

cat $hdd_file | grep $ssd | parallel -C '\t' clean_and_destroy

작동합니다. $hdd_file은 파일 이름이고, grep은 특정 $ssd가 캐시된 라인으로 있는 hdd를 수집한 다음 병렬로 함수를 호출하여 연결을 파괴합니다.

이제 정리된 SSD에 새 파티션이 있으므로 다음과 같이 병렬을 호출하려고 합니다.

cat $hdd_file | grep $ssd | parallel -C '\t' create_new_cache :::+ `seq $partitions_per_ssd`

파이프에서 매개변수를 가져와서 주어진 숫자와 쌍을 이루어야 하지만 그렇지 않습니다.

cat $hdd_file | grep $ssd | parallel -C '\t' create_new_cache ::: {} :::+ `seq $partitions_per_ssd`

나는 또한 이것을 시도했지만 여전히 작동하지 않습니다. 어떤 이유로든 {}:::+가 인수로 전달됩니다.

답변1

암소 비슷한 일종의 영양parallel해결책:

input.txt(데모용):

a   b
c   d
e   f

grep '^[ac]' input.txt입력 소스 파일과 마찬가지로 명령(또는 파이프)을 시뮬레이션하는 데 사용됩니다.


parallel -C '\t' echo :::: <(grep '^[ac]' input.txt) ::: $(seq 1 3)

산출:

a b 1
a b 2
a b 3
c d 1
c d 2
c d 3

  • :::: argfiles- argfiles입력 소스로 처리됩니다. :::그리고 ::::혼합될 수 있습니다.

각 입력 소스의 요소를 집계하려면 --xapply옵션을 추가하세요.

parallel -C '\t' --xapply echo :::: <(grep '^[ac]' input.txt) ::: $(seq 1 2)

산출:

a b 1
c d 2

관련 정보