병렬성을 사용하여 목록에 여러 인수가 있는 프로그램 실행

병렬성을 사용하여 목록에 여러 인수가 있는 프로그램 실행

다음과 같이 명령줄(Ubuntu)을 통해 실행되는 bash 프로그램이 있습니다.

./extract_field.sh ABC001

ABC001주어진 쉐이프파일에서 추출하려는 필드 ID는 어디에 있습니까?

여러 ID로 이 스크립트를 실행하려면 먼저 파일에 한 줄에 하나의 ID를 저장합니다 list.txt.

ABC001
ABC014
ABC213
ABC427

그런 다음 다음을 사용하여 스크립트를 호출하십시오 parallel.

parallel -a list.txt ./extract_field.sh

여태까지는 그런대로 잘됐다.

extract_field.sh하지만 매개변수가 하나만 필요하지 않고 두 개가 필요하도록 변경할 계획입니다 . 이와 같이 한 줄에 두 개의 매개 변수를 수용하도록 텍스트 파일을 변경하면 위의 작업 흐름이 계속 작동합니까?

ABC001 arg2a
ABC014 arg2b
ABC213 arg2c
ABC427 arg2d

parallel -a list.txt ./extract_field.sh이 변화로 나는 다음과 같이 행동하고 싶습니다

./extract_field.sh ABC001 arg2a
./extract_field.sh ABC014 arg2b

등.

맞아?

요청하기 전에 테스트할 수도 있었지만 스크립트의 이 변경 사항이 완료하는 데 아마도 몇 시간이 걸릴 것이기 때문에 먼저 요청하기로 결정했습니다(간단한 변경처럼 들리더라도).

답변1

명령 구문에 열 구분 기호를 지정하여 병렬 기능을 사용하여 단일 명령에 여러 인수를 제공할 수 있습니다.

parallel --colsep ' ' -a list.txt ./extractfield.sh {1} {2}

다음과 같은 결과를 제공합니다

./extract_field.sh ABC001 arg2a
./extract_field.sh ABC014 arg2b

파일에 다음이 list.txt포함되어 있다고 가정하면

ABC001 arg2a
ABC014 arg2b

또는 둘 다 여러 위치 인수가 필요하므로 cp이를 사용하여 테스트 할 수 있습니다 .mv

유용한 병렬 맨페이지

관련 정보