다음과 같이 명령줄(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