pwdとsedのコンテンツはコンテンツを置き換えることはできません。 [重複]

pwdとsedのコンテンツはコンテンツを置き換えることはできません。 [重複]

次の内容を含むファイルがあります。

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

関連情報