두 파일의 일치하는 줄을 비교하고 긍정적인 결과를 저장합니다.

두 파일의 일치하는 줄을 비교하고 긍정적인 결과를 저장합니다.

두 개의 파일이 있습니다.

파일 1:

A0001  C001
B0003  C896
A0024  C234
.
B1542  C231
.
upto 28412 such lines

파일 2:

A0001
A0024
B1542
.
.
and 12000 such lines.

파일 2를 파일 1과 비교하고 일치하는 줄을 파일 1에 저장하고 싶습니다. Perl과 Bash를 사용해 보았지만 둘 다 작동하지 않는 것 같습니다.

최근에 시도한 것은 다음과 같습니다.

for (@q) # after storing contents of second file in an array
{
        $line =`cat File1 | grep $_`; #directly calling File 1 from bash
        print $line;
}

그러나 그것은 실패했습니다.

답변1

이 작업을 수행해야 합니다.

grep -Ff File2 File1

-f File2여기에서 패턴을 읽고 패턴을 고정 문자열로 File2처리합니다 -F(즉, 정규식이 사용되지 않음).

답변2

당신은 그것을 사용할 수 있습니다 awk:

$ awk 'FNR==NR{a[$1];next}($1 in a){print}' file2 file1
A0001   C001
A0024   C234
B1542   C231

답변3

두 파일 모두 첫 번째 필드에 정렬되어 있는 것 같습니다. 만일이 경우라면:

join file1 file2

파일 크기가 크면 가장 좋습니다.

관련 정보