ファイルの一部の単語を置き換えるスクリプトを作成しています。行を(ファイル名の最初の部分).fastq.gzに変更したいと思います。
私は持っています
ファイル入力用ls /pathway *.sam | sort | uniq
sed -i "s/VFC-00012-02.fastq.gz/${filename}.fastq.gz/g" $file 実行
完璧
このスクリプトを実行すると、空のセクションが表示されます。
私が欲しい(ファイル名B(B.extensions))
B.fastq.gz
本文から
sed コマンドの後
私はこの問題を次の助けを借りて解決しました。 https://askubuntu.com/questions/1011839/how-do-i-use-file-names-in-a-sed-command
ベストアンサー1
閉じる一重引用符の後にはスペースが必要です。それ以外の場合、シェルはファイル名を置換の一部として解釈します。
sed -i 's/VFC-00012-02.fastq.gz/$filename.fastq.gz/' "$file"
トークン化されないように、変数の周りに二重引用符を付けることをお勧めします。
一方、いいえ変数($ filename)を二重引用符で囲むことは、変数がまったく拡張されないことを意味します。つまり、ファイルにリテラルドル記号が含まれます。これがあなたが望むものかどうかはわかりません。
$filenameを拡張するために二重引用符に切り替えることができますが、sed特殊文字を含めることができることに注意する必要があります。 sedは引数を見る前にシェルが変数を拡張するので、sedはその文字がソースからどこから来たのかわからないからです。変わりやすい。