간단한 쉘스크립트 질문입니다.

쵱주의 이미지

하나는 시간별 농도 파일입니다. (*.txt)
111121 1997 1 2 84 63 15 12 11 11 12 26 12 16 12 11 11 11 12 27 12 35 24
111121 1997 1 3 22 16 16 22 17 12 12 12 21 12 19 12 22 12 35 13 11 11 18
111121 1997 1 4 14 12 11 14 13 13 12 14 28 36 66 69 69 69 79 79 89 59 58
111121 1997 1 5 39 35 26 31 38 31 28 23 36 55 64 90 65 33 17 33 20 34 33
111121 1997 1 6 13 33 13 25 23 13 12 41 45 35 48 49 42 44 43 44 56 53 47
.....

다른 하나는 제가 뽑고 싶은 $1 (flag로 보면 될 것 같습니다) 만을 써놓은 파일입니다. (seoul.st)
111121
111123
....

따라서 쉘스크립트를 다음과 같이 작성해 보았습니다.
#!/bin/ksh
for i in *.txt; do
ehco $i
for j in $(cat seoul.st); do
gawk `{if ($1~$j) print $0}` $i >> test.lst
done
done

하지만 어떠한 행도 나오질 않습니다.
무엇이 문제인지 고수님들의 의견 부탁드립니다.

gorinux의 이미지

cat '농도파일데이터파일' | awk '{print $1}' > filter.txt
planetarium의 이미지

문제를 잘못 해석하신 것 같습니다.

aero의 이미지

.
.
.
.

#!/bin/sh
for i in *.txt; do
echo $i
for j in $(cat seoul.st); do
awk -v key="$j" '{if ($1~key) print $0}' $i >> test.lst
done
done

awk의 코드 부분에 바로 쉘 변수를 쓰면 동작하지 않습니다.
이때는 -v 옵션으로 특정 awk변수로 바인딩 시켜줘야 합니다.

쵱주의 이미지

-v 옵션이 있다는 것을 이제야 알았습니다. key라는 변수에 j의 내용을 담은 것으로 이해하겠습니다.
좋은 조언 감사드립니다.

어려워...

어려워...