![pwdとsedのコンテンツはコンテンツを置き換えることはできません。 [重複]](https://linux33.com/image/11830/pwd%E3%81%A8sed%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%82%92%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%20%5B%E9%87%8D%E8%A4%87%5D.png)
次の内容を含むファイルがあります。
BWA='/software/bwa/bwa-0.7.12/bwa'
SAMTOOLS='/software/samtools/samtools-1.3.1/samtools'
上記のツールは私のコンピュータにあります。
- ここで bwa => /work/waterhouse_team/miniconda2/envs/arima/bin/bwa と
pwd
/hic-fq => /scratch/waterhouse_team/benth/dbg2olc-40x/hic-fq
次に、次の2つのコマンドを使用しましたsed
。
sed -i.bak 's|/software/bwa/bwa-0.7.12/bwa|$(which bwa)|g' mapping_arima.sh
sed -i.bak 's|/software/samtools/samtools-1.3.1/samtools|$(which samtools)|g' mapping_arima.sh
残念ながら、私が受け取った結果は次のとおりです。
BWA='$(which bwa)'
IN_DIR='$(`pwd`)/hic-fq'
sed
次のようにコマンドを変更するにはどうすればよいですか?
- BWA = '/work/waterhouse_team/miniconda2/envs/arima/bin/bwa'と
- IN_DIR=/scratch/waterhouse_team/benth/dbg2olc-40x/hic-fq
事前にありがとう
答え1
コマンド置換は$(…)
一重引用符内では拡張されません。
あなたは試すことができます:
sed -i.bak "s|/software/bwa/bwa-0.7.12/bwa|$(which bwa)|g" mapping_arima.sh
sed -i.bak "s|/software/samtools/samtools-1.3.1/samtools|$(which samtools)|g" mapping_arima.sh
ただし、スクリプトにある場合は、次を使用してください。
#!/bin/sh
file=mapping_arima.sh
from01='/software/bwa/bwa-0.7.12/bwa'
to01=$(which bwa)
from02='/software/samtools/samtools-1.3.1/samtools'
to02=$(which samtools)
sed -i.bak "s|$from01|$to01|g" "$file"
sed -i.bak "s|$from02|$to02|g" "$file"
答え2
次のコマンドを試すことができます。
sed -ri.bak "s#software/bwa/bwa-0.7.12/bwa#`which bwa`#g" mapping_arima.sh
sed -ri.bak "s#software/samtools/samtools-1.3.1/samtools#`which samtools`#g" mapping_arima.sh