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
求大神分析原因以及怎么改正!多謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/120136.html
標籤:專題技術討論區
