![pwd 및 sed의 콘텐츠는 콘텐츠를 대체할 수 없습니다. [중복]](https://linux55.com/image/11830/pwd%20%EB%B0%8F%20sed%EC%9D%98%20%EC%BD%98%ED%85%90%EC%B8%A0%EB%8A%94%20%EC%BD%98%ED%85%90%EC%B8%A0%EB%A5%BC%20%EB%8C%80%EC%B2%B4%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%5B%EC%A4%91%EB%B3%B5%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
다음으로 다음 두 명령을 사용했습니다 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