다음과 같이 한 줄에 두 개의 파일 이름이 있는 파일이 있습니다.
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
...직관적으로 이해가 더 잘 된다면요.