쉘 스크립트로 파일을 읽어서 조작하고 싶습니다..

chp320의 이미지

안녕하세요,
현재 AIX Version 5, UNIX를 사용중에 있습니다.

a.csv 라는 파일에

1 1 aaa

2 2 bbb

3 3 ccc

4 4 ddd

5 5 eee

라는 5줄의 데이터가 있습니다.


첫 열과 두번째 열을 비교해서 같은 값이면 세번째 열과 TRUE를 찍고 그렇지 않으면 FALSE를 찍어서

result.txt라는 파일로 저장하고자 합니다.

아래와 같이 구현하였지만 첫 줄인 aaa만 제외된 나머지 데이터만 출력이 됩니다..

while read line; do

awk '{if($1 == $2) print $3" TRUE"; else print $3" FALSE"}' >> result.txt

done < a.csv

결과>

bbb TRUE
ccc TRUE
ddd TRUE
eee TRUE

이유가 무엇일까요 ㅠㅠ

부디... 조언 부탁드립니다 ㅠㅠ

미리 감사드립니다 :)

sblade의 이미지

awk 가 실행된 다음에야 인풋을 기다리기 때문입니다.
즉 첫번째 iteration 에서 실행된 awk 은 두번째 line 을 먹습니다.

아마 이렇게 하면 될겁니다.
while read line
do
echo $line | awk '...'
done < a.csv

그런데 awk로 하는게 하고자 하는 일의 전부라면
그냥
$ awk '...' < a.csv
하면 라인별로 처리합니다. 즉 while loop 을 굳이 쓸 필요가 없습니다.