파일의 열을 출력 파일 변수 이름으로 사용

파일의 열을 출력 파일 변수 이름으로 사용

헤드 테스트 영역.베드

21      15390708       
21      15890068        16388793
21      16390041        16888505
21      16889055        17388185
21      17388731        17886839

.bed 파일의 각 줄을 출력 이름으로 사용하고 싶습니다. 예를 들면 다음과 같습니다.

while readline  
do zip.sh > 21_15390708_ 15889554.zip
            21_16390041-16888505.zip

xargs가 이 작업을 수행할 수 있다는 내용을 읽었습니다. 그러나 각 줄을 고유한 출력 파일 이름으로 출력하는 방법이 혼란스럽습니다.

xargs -a testregions.bed -I {} zip inputfile {} >> outputfile_{}.zip

등. 어떤 도움이라도 대단히 감사하겠습니다.

답변1

다음은 다음과 같이 사용할 수 있는 이해하기 쉬운 방법입니다 testregions.bed. 먼저 원본 파일에서 공백을 모두 제거한 testregions.bed다음 숫자만 새 파일에 저장합니다 .new.txt

cat testregions.bed | tr -d "[:blank:]" > new.txt

그런 다음 다음과 같이 각 줄에 대해 새 파일을 만듭니다 new.txt.

cat new.txt | while read line do touch "$line".zip done

그런 다음 다음을 삭제할 수 있습니다 new.txt.

rm new.txt

test.sh따라서 .zip파일을 생성하는 스크립트는 testregions.bed다음과 같습니다.

#!/bin/sh

cat testregions.bed | tr -d "[:blank"]" > new.txt
cat new.txt | while read line
do
        touch "$line".zip
done
rm new

관련 정보