두 개의 큰 파일(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