2011-04-27 3 views
3

다른 파일의 컬럼에 보유 된 문자열을 포함하는 파일의 모든 라인을 찾고 싶습니다.grep 패턴으로 awk 출력의 각 라인 사용

제가 grep "$(awk '{ print $1 }' file1.txt)" file2.txt

시도 갖지만 단지 전체적으로 file2.txt 출력한다.

나는이 사이트에서 찾은 패턴으로 이전에 이것을 수행했음을 알고 있지만 더 이상 그 질문을 찾을 수 없습니다.

+0

명령이있을 때 grep를 사용할 필요가 없습니다은이하도록되어 무엇을. 내 문제는 file1에 grep에 패턴을 보내는 빈 줄이있어서 file2의 모든 줄을 찾습니다. – sans

답변

6

OP 질문에 더 이상 질문이 없다는 것을 알았습니다. 그러나 다음과 같이 약간 수정하면 빈 줄 상황이 처리됩니다. 그냥 라인이 있는지 확인하기 위해 검사를 추가 적어도 하나의 필드 :

:
grep "$(awk '{if (NF > 0) print $1}' file1)" file2 

그리고 패턴 파일이 줄에 패턴의 집합 단지의 경우, 다음의 훨씬 간단 버전이

grep -f file1 file2 

이렇게하면 grep이 file1의 줄을 패턴으로 사용하게됩니다.

2

당신이 영업 이익 awk

awk 'FNR==NR&&NF{a[$0];next}($1 in a)' file2 file1