Sed 검색 및 바꾸기에서 변수 확장이 작동하지 않습니다.

Sed 검색 및 바꾸기에서 변수 확장이 작동하지 않습니다.

OS=GNU Linux

입력 파일

gene_id "STRG.50";
gene_id "STRG.52";
gene_id "STRG.59";

템플릿 변경

STRG.50  AT1G27500
STRG.52  AT2G37985
STRG.59  AT2G33392

불다

while read bef aft
do
  echo $bef
  echo $aft
  sed -i "s/$bef\";/$aft\";/g" input.txt
done < template

이것은 작동하지 않습니다. Echo 라인은 잘 작동하지만 입력 파일은 변경되지 않고 그대로 유지되며 모든 echo 문이 완료된 후 sed가 무기한 정지됩니다.

답변1

실제로 작동합니다:

tuhin@tuhin-virtualvbox:temp$ cat input.txt 
gene_id "STRG.50";
gene_id "STRG.52";
gene_id "STRG.59";
tuhin@tuhin-virtualvbox:temp$ cat template 
STRG.50  AT1G27500
STRG.52  AT2G37985
STRG.59  AT2G33392
tuhin@tuhin-virtualvbox:temp$ while read bef aft; do   echo $bef;   echo $aft;   sed -i "s/$bef\";/$aft\";/g" input.txt; done < template 
STRG.50
AT1G27500
STRG.52
AT2G37985
STRG.59
AT2G33392
tuhin@tuhin-virtualvbox:temp$ cat input.txt 
gene_id "AT1G27500";
gene_id "AT2G37985";
gene_id "AT2G33392";
tuhin@tuhin-virtualvbox:temp$ 

관련 정보