Ao atribuir à variável filename , você pode usar o utilitário basename da seguinte forma:
filename="$( basename "$file" .bam )"
Isso dará filename o valor myfile if $file , por exemplo, /my/data/myfile.bam (ou seja, removerá qualquer elemento do caminho, bem como o sufixo especificado).
Você pode até usar
filename="/mynewpath/$( basename "$file" .bam )_chr.bam"
ou
filename="$( printf '/mynewpath/%s_chr.bam' "$( basename "$file" .bam )" )"
Com os dois últimos exemplos, você usaria mais tarde "$filename" em vez de "/mynewpath/${filename}_chr.bam" para o redirecionamento.
Quanto ao sed :
sed -e 's/SN:([0-9XY])/SN:chr/' -e 's/SN:MT/SN:chrM/'
Isso inserirá a string chr em SN:X onde X é um nome de cromossomo, transformando-o em SN:chrX . No entanto, você precisará usar \( ... \) em vez de ( ... ) para o grupo de captura ou adicionar a opção -E à invocação de sed , ou você receberá um erro dizendo "referência inválida \ 1 em" s 'comando's RHS "(com GNU sed ) ou" \ 1 não definido no RE "(com BSD sed ).