shell脚本-用循环从a文本提取1,2,3...列数据重复替换b文本指定位置内容
shell脚本,我写了个循环,想用文本a.txt中第一行的4个数依次重复替换TBCxiug.dat文件中74行第2项的1530.00,脚本如下:
#!/bin/sh
b=1;
while [ $b -lt 5 ];
do
echo $b;
sed -i "s/`cat TBCxiug.dat |awk '{print $2 }'|awk 'NR==74{print}'`/`cat a.txt |awk '{print $b }'|awk 'NR==1{print}'`/g" TBCxiug.dat
b=`expr $b + 1`;
done
文本a.txt内容如下:
1.396336670E+003 1.389259766E+003 1.382734131E+003 1.378035278E+003
1.367266602E+003 1.362385010E+003 1.359675781E+003 1.359435425E+003
1.366114014E+003 1.373034912E+003 1.380192505E+003 1.388231079E+003
TBCxiug.dat部分内容如下:
69 *DEFINE T
70 *DESCRIPTION
71 *END DESCRIPTION
72 *PARAMETERS
73 TYPE NORMAL
74 MEAN 1530.00
75 STDEV 30.0000
76 *END PARAMETERS
77 *END DEFINE T
但结果好像写入一个数,而是把一整行数数都写进去了,如下:
循环1次的结果
*DEFINE T
*DESCRIPTION
*END DESCRIPTION
*PARAMETERS
TYPE NORMAL
MEAN 1.396336670E+003 1.389259766E+003 1.382734131E+003 1.378035278E+003
STDEV 30.0000
*END PARAMETERS
*END DEFINE T
循环4次的结果
*DEFINE T
*DESCRIPTION
*END DESCRIPTION
*PARAMETERS
TYPE NORMAL
MEAN 1.396336670E+003 1.389259766E+003 1.382734131E+003 1.378035278E+003
1.389259766E+003 1.382734131E+003 1.378035278E+003
1.389259766E+003 1.382734131E+003 1.378035278E+003
1.389259766E+003 1.382734131E+003 1.378035278E+003
STDEV 30.0000
*END PARAMETERS
后来我又把脚本中红色部分改成awk "{print \$$b }",结果形式看起来对的,但是写入TBCxiug中的数据并不是存在于a.txt中的数据,不知道哪里来的数,而且同一脚本每次运行,写入的数值还不一样!如下:
*END DESCRIPTION
*PARAMETERS
TYPE NORMAL
MEAN 56870
STDEV 30.0000
*END PARAMETERS
*END DEFINE T
求大神分析原因以及怎么改正!多谢!