![두 파일의 일치하는 줄을 비교하고 긍정적인 결과를 저장합니다.](https://linux55.com/image/53161/%EB%91%90%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EC%A4%84%EC%9D%84%20%EB%B9%84%EA%B5%90%ED%95%98%EA%B3%A0%20%EA%B8%8D%EC%A0%95%EC%A0%81%EC%9D%B8%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%A0%80%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
두 개의 파일이 있습니다.
파일 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
파일 크기가 크면 가장 좋습니다.