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$