awk/sed ファイル名の一部

awk/sed ファイル名の一部

ファイル名をコマンドラインに引数として渡すたびに、ファイル名の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}

単語が展開され、パターンが生成され、以下の規則に従って一致します(パターン一致を参照)。パターンが一致する場合パターンがパラメータ拡張値の末尾の部分と一致する場合、拡張結果は、最短一致パターン(「%」ケース)または最長一致パターン(「%」ケース)が削除されたパラメータ値です。パラメータが「@」または「の場合'を使用すると、各位置引数にパターン除去操作が順番に適用され、拡張が結果リストになります。パラメータが配列変数の場合、下付き文字は「@」または「'を実行すると、配列の各メンバーにパターン削除操作が順番に適用され、拡張が結果リストになります。

おすすめ記事