2013-04-02 42 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