2013-01-20 3 views
0

문자열이 있습니다. 내가 만 그 라인을 얻을 필요가지정한 문자열로 패턴을 제한하십시오.

1abc_A 2pqr_X 0.55  0.87 
2pqr_X 3def_Y 0.21  0.24 
4ghi_Z 1abc_A 0.98  0.75 
2pqr_X 4ghi_Z 0.99  0.76 
2pqr_X 2pqr_X 1.00  1.00 

:

1abc_A 
2pqr_X 
4ghi_Z 

나는이처럼 보이는 텍스트 파일 (TEST.TXT)을 가지고 그들이 (List.txt 파일), 말할 수 있습니다 TEST.TXT, 컬럼 1 및 2의 문자열이 경우 List.txt 파일

에 포함 된 문자열에 속하도록, 같은 것이 내 출력은 다음과

1abc_A 2pqr_X 0.55  0.87 
4ghi_Z 1abc_A 0.98  0.75 
2pqr_X 4ghi_Z 0.99  0.76 
2pqr_X 2pqr_X 1.00  1.00 

즉 test.txt의 모든 줄 2 번째 줄을 제외하고 두 번째 줄의 열 2 이후 3def_Y가 list.txt에 지정된 문자열 목록에 없습니다.

어떻게 awk에서이 작업을 수행 할 수 있습니까? test.txt는 약 7GB의 대용량 텍스트 파일입니다.

이 문제를 해결하는 가장 빠른 방법은 무엇입니까? 도와주세요. 이 1, 2 필드 있다는 TEST.TXT 검사 라인에 의해 배열의 인덱스, 다음 행으로

답변

3
awk 'NR==FNR{a[$0];next} ($1 in a) && ($2 in a)' list.txt test.txt 

가 저장 List.txt 파일의 내용이 어레이의 두 지표이다. test.txt는 메모리에 test.txt를 저장하지 않으므로 모든 크기의 test.txt에서 작동합니다.

+0

감사합니다. 이것은 그것을했다. – ana

+0

+1 멋진 원 - 라이너 – Kent

관련 문제