![더 큰 파일 A를 읽고 두 번째 파일에서 관련 문자열을 검색하고 출력을 만듭니다.](https://linux55.com/image/117197/%EB%8D%94%20%ED%81%B0%20%ED%8C%8C%EC%9D%BC%20A%EB%A5%BC%20%EC%9D%BD%EA%B3%A0%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EA%B4%80%EB%A0%A8%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EA%B2%80%EC%83%89%ED%95%98%EA%B3%A0%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4..png)
두 개의 큰 파일(160만 ~ 4700만 항목)에 대해 for 루프를 실행하고 있으며 각 줄을 파악하는 데 많은 시간이 걸립니다. 여기서 다른 더 빠른 솔루션을 사용할 수 있는지 궁금합니다. 기본적으로 FILE-A의 각 줄을 읽고 FILE-B.csv로 grep하여 결과 출력을 생성해야 합니다.
FILE-A: (1.6 million IDs)
FILE-B.csv: (47 million IDs & Other Attributes)
for UID in $(cat FILE-A); do
cat FILE-B.csv | grep $i >> OUTPUT-FILE.csv
done
답변1
grep -F -f FILE-A FILE-B.csv
-f
스키마를 가져올 파일을 지정합니다. -F
패턴을 줄 바꿈으로 구분된 고정 문자열로 지정합니다.
원본 코드에 따르면 파이핑 입력은 쓸데없는 리소스 낭비 cat
입니다 . 파일을 직접 읽을 수 있습니다.grep
grep