다음 내용이 포함된 파일이 있습니다.
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