파일 목록의 텍스트 파일에서 인수로 또는 인수로 행 전달

파일 목록의 텍스트 파일에서 인수로 또는 인수로 행 전달

다음과 같이 한 줄에 두 개의 파일 이름이 있는 파일이 있습니다.

file1.fastq.gz file2.fastq.gz
...
file9fastq.ga file10fastq.gz

이 두 이름을 스크립트에 인수로 전달하려면 어떻게 해야 합니까?

답변1

while read루프를 사용하십시오 .

while read -r file1 file2 trash; do
  something with "$file1" and "$file2"
done < /path/to/input_file

그러면 입력 파일을 한 줄씩 읽어 file1첫 번째 열과 file2두 번째 열을 각각 설정합니다. trash불필요할 수도 있지만 다음과 같이 발생할 수 있는 문제를 처리하기 위해 포함하고 싶습니다.

file1.fastq.gz file2.fastq.gz foo

파일에 위와 같은 줄이 포함되어 있고 해당 trash변수(또는 유사한 것)를 포함하지 않은 경우 file2변수는 다음과 같이 설정됩니다.file2.fastq.gz foo

답변2

xargs또 다른 방법은 파일 형식이 말한 것과 똑같다면 한 줄에 두 개의 공백으로 구분된 필드입니다(줄임표 참고 ...).

< input xargs -n2 ./script-here

input...라는 이름의 파일을 한 줄씩 읽고 두 인수를 에 전달합니다 ./script-here.

리디렉션 일정을 변경할 수 있습니다.

xargs -n2 ./script-here < input

...직관적으로 이해가 더 잘 된다면요.

관련 정보