abc.fq.gz
두 개의 다른 파일 확장자 가 있는데 abc.fastq.gz
이를 abc.sam
.
나는 이것을 시도했습니다 :
#!/bin/bash
refdir="Homo_sapiens.GRCh38.dna_sm.primary_assembly"
forward=(*_1.{fq,fastq}.gz)
reverse=(*_2.{fq,fastq}.gz)
for i in "${!forward[@]}"
do
echo ${forward[i]//_1.{fq,fastq}.gz/.sam}>> a.txt
done
하지만 이 {fq,fastq}
부분은 작동하지 않습니다. 위에서 볼 수 있듯이 _1.fq.gz
or 를 _2.fastq.gz
로 바꿔야 .sam
하므로
- 입력은
abc_1.fq.gz
또는abc_1.fastq.gz
- 예상 출력은 다음과 같습니다.
abc.sam
어떻게 해야 하나요?
답변1
Bash 매개변수 확장에는 중괄호 확장을 사용할 수 없지만 KSH 스타일 확장 글로브는 사용할 수 있습니다. 전임자.
touch foo_1.fq.gz bar_1.fastq.gz
shopt -s nullglob extglob
forward=( *_1.{fq,fastq}.gz )
노트:
nullglob
일치하지 않는 glob이 배열에 추가되는 것을 방지하려면 추가하세요.배열을 채우는 데 사용하지 마십시오
ls
. 참조배쉬 트랩 #1
그 다음에
$ for i in ${!forward[@]}; do echo "${forward[i]/_1.@(fq|fastq).gz/.sam}"; done
foo.sam
bar.sam