bam
여러(바이너리 파일 형식) 파일에서 특정 줄을 추출 하고 싶습니다 . 다음을 사용하여 단일 파일에서 행을 선택할 수 있습니다 bam
.
samtools view -c TCGA-BH-A0BW-11A.sorted.bam "5:13744354-13744380"
550
다음과 같은 100개의 파일이 있는 디렉토리가 있습니다 bam
.
TCGA-AC-A2FB-11A.sorted.bam
TCGA-AC-A2FF-11A.sorted.bam
TCGA-AC-A2FM-11B.sorted.bam
TCGA-AC-A2QH-01A.sorted.bam
TCGA-AC-A2QJ-01A.sorted.bam
TCGA-BH-A0BW-11A.sorted.bam
TCGA-BH-A0BW-01A.sorted.bam
TCGA-CH-A0BW-11A.sorted.bam
해당 명령을 여러 파일에 적용하고 첫 번째 열은 확장자 없는 파일 이름으로, 두 번째 열은 해당 파일에 대한 명령의 결과 bam
로 단일 파일에 출력을 저장하려면 어떻게 해야 합니까 ?samtools
예를 들어 다음과 같아야 합니다.
TCGA-BH-A0BW-11A 550
TCGA-BH-A0BW-01A 220
TCGA-CH-A0BW-11A 100
저는 Linux 시스템에서 작업하고 있습니다.
답변1
를 사용하는 경우 bash
적절한 확장자를 가진 모든 파일을 반복하고 다음과 같이 처리할 수 있습니다.
for file in *.sorted.bam
do
key="${file%.sorted.bam}"
value="$(samtools view -c "$file" "5:13744354-13744380")"
echo "$key $value"
done > output.txt
루프에서 우리는
.sorted.bam
파일 이름 끝에서 제거하여 파일 키를 생성하고 이를 쉘 변수에 저장합니다key
.- 단일 파일 예제에 표시된 처리를 수행하고 출력을 셸 변수에 저장합니다.
value
- 키 및 값 인쇄
루프의 전체 출력을 파일로 리디렉션합니다 output.txt
.