[완료]grep 명령을 사용하려고

choco6의 이미지

다음과 같은 텍스트 파일이 있습니다.

---------------------
번호   처리    계좌
---------------------
0001    N    10157
0002    Y    20315
0003    N    33114
0004    Y    37589
0005    Y    72150
...중략...

이 내용중 두번째 필드인 처리 필드가 Y인 레코드의 계좌번호만 뽑으려고 하면 awk를 이용해 다음과 같이 추출할 수 있습니다.

$ awk '$2=="Y" {print $3}' result.txt
20315
37589
72150
...중략...

그런데 이렇게 뽑은 번호를 계좌리스트 파일(acct.lst)에서 grep으로 검색하려고 하는데 awk와 grep을 파이프로 연결하는 방법을 모르겠습니다. 다음과 같이 해봤는데 안되더군요..ㅠㅠ

$ awk '$2=="Y" {print $3}' result.txt | grep {} acct.lst

그렇다고 xargs로 넘겨줘도 마찬가지로 안됩니다..
$ awk '$2=="Y" {print $3}' result.txt | xargs grep acct.lst
grep: can't open 20315
grep: can't open 37589
grep: can't open 72150
... 중략...

저렇게 awk의 결과물을 파이프의 grep의 검색 스트링으로 넘기려면 어떻게 커맨드를 줘야 하는지 아시는 분 알려주시기 바랍니다.

panda005의 이미지


awk의 출력을 grep의 패턴으로 쓰시는 건가요?

awk '$2=="Y" {print $3}' 1 | grep -f - acct.lst

이러면 될 것 같네요.

choco6의 이미지

오호~ -f 옵션과 -를 사용하는군요.. 감사합니다, panda005님~