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$