2013-04-02 7 views
0

이 내 코드입니다. 여기서는 "1AM"에 "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 값이 1 이지만 파일이 업데이트 점점되지 오전 1시 같은 업데이트를이다 에코 값 오전 1 표시하지만 파일 "1"값을 갖는다.

코드에 문제가 있습니까? 미리 감사를지도하십시오!

+1

그것은 파일을 업데이트하지 않았다' $ f1 : $ f2 : $ f3 : $ f4 : $ f5> out.txt'를 출력하십시오. – Ajith

답변

0

따라서 : - 지정 파일의 두 번째 열을 1에서 1AM으로 조건부로 변경 하시겠습니까?

당신은, 예를 들어, 쉽게와 awk을 수행 할 수 있습니다 : 당신은 .. 파일을 업데이트하는 코드를 넣어 '인쇄 $의 f2`를 변경하지 않았기 때문에

$ 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 
관련 문제