ファイル名をコマンドラインに引数として渡すたびに、ファイル名のawk / sedプレフィックスを使用したいと思います。
例えば、
ファイルが複数あります。
a.fastq.gz
b.fastq.gz
c.fastq.gz
d.fastq.gz
私が実行している場合:
sh test.sh --INFILE b.fastq.gz
私が望む出力は次のとおりです。
b
私が試したが失敗したのは、
prefix="sed 's/.fastq//' ${INFILE}"
ベストアンサー1
シェル引数拡張を使用します(ファイル名をに割り当てると仮定INFILE
)。
INFILE=b.fastq.gz
prefix=${INFILE%%.*}
または、サフィックスが確実に固定されていて、より正確にしたい場合(可能であれば常に推奨されます):
prefix=${INFILE%.fastq.gz}
${parameter%word}
${parameter%%word}
単語が展開され、パターンが生成され、以下の規則に従って一致します(パターン一致を参照)。パターンが一致する場合パターンがパラメータ拡張値の末尾の部分と一致する場合、拡張結果は、最短一致パターン(「%」ケース)または最長一致パターン(「%」ケース)が削除されたパラメータ値です。パラメータが「@」または「の場合'を使用すると、各位置引数にパターン除去操作が順番に適用され、拡張が結果リストになります。パラメータが配列変数の場合、下付き文字は「@」または「'を実行すると、配列の各メンバーにパターン削除操作が順番に適用され、拡張が結果リストになります。