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

다음으로 다음 두 명령을 사용했습니다 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

관련 정보