abc.fq.gz
2つの異なるファイル拡張子があり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