2013-04-02 40 views
0

下面是我的代碼。在這裏,我將第2列的值更改爲「1」,但它不起作用。價值沒有得到分配在while循環內

#! /bin/ksh 

file="TOTAL_SALES_UNITS_ORDERS_SORTDATA1.txt" 
while IFS=":" read f1 f2 f3 f4 f5 
do 
if [[ $f2 -eq '1' ]]; 
then 
print $f2 
f2="1AM" 
print $f2 
fi 
    IFS=":" 
done < "$file" 

預期的結果是第2欄是作爲更新1AM,其中該值是1 但文件是沒有得到更新,回波值顯示1AM但文件具有值「1」。

代碼中有什麼問題嗎?請提前指導感謝!

+1

因爲你沒有把任何代碼更新文件..嘗試改變'$打印到f2'它沒有更新的文件'打印$ f1:$ f2:$ f3:$ f4:$ f5> out.txt' – Ajith

回答

0

所以,你想從一個1: -delimited文件1AM有條件地更改第二列?

爲此,您可以很容易地,例如,awk

$ cat testdata 
foo:bar:quux:one:two 
foo:1:quux:one:two 

$ awk 'BEGIN { OFS=FS=":" } { if ($2 == "1") $2 = "1AM"; print }' <testdata> newdata 
$ cat newdata 
foo:bar:quux:one:two 
foo:1AM:quux:one:two