变量扩展在 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 行工作正常,但输入文件保持不变,并且 sed 在所有 echo 语句完成后无限期挂起。

答案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$ 

相关内容