두 파일의 차이점을 파일에 쓰는 프로그램을 작성해야합니다. 프로그램은 600MB 파일을 13.464.448 회선 이상으로 반복해야하며, grep이 다른 파일에서 true를 반환하는지 확인한 다음 그 결과를 다른 파일에 씁니다. 약 1.000.000 개의 레코드로 빠른 테스트를 작성했는데 한 시간 이상 걸렸으므로이 방법이 9 시간 이상 걸릴 수 있습니다.두 개의 큰 파일 비교
이 작업을 수행하는 방법에 대한 권장 사항이 있습니까? 내가 사용해야하는 특정 언어? 나는 bash 나 python으로 할 계획이었습니다.
미리 감사드립니다.
[편집 1] : 미안하지만, 두 파일의 차이점을 말할 때 나는 diff를 의미하지는 않습니다. 결과 파일의 형식이 다릅니다.
논리는이 같은 비트 :
파일 A가 파일 B는 내가 FILE A에서 읽을 현재 행을 선택 파일 B에 grep을 만 13 이상의 선
가 297.599 선, 그 줄이 파일 B에 있으면 결과 파일에 그 줄을 씁니다. 그건 그렇고, 파일 A와 파일 B는 서로 다른 형식을 가지고 있습니다. 결과 파일의 형식은 File A입니다.
[편집 2] : 나는 실행해야하는 모든 컴퓨터에 Python을 설치할 필요가 없도록 bash 솔루션을 이상적으로 만들 것을 요청 받았습니다. 에.
이 내 curent 구현이 bash는 방법은 완료하는 데 10 시간 이상 걸리는
#!/bin/bash
LAST_TTP=`ls -ltr TTP_*.txt | tail -1 | awk '{ print $9 }'`
LAST_EXP=`ls -ltr *.SSMT | tail -1 | awk '{ print $9 }'`
while read -r line; do
MATCH="$(grep $line $LAST_EXP)"
echo "line: $line, match: $MATCH"
# if not empty
if [ ! -z "$MATCH" ]
then
echo $MATCH >> result
fi
done < $LAST_TTP
. bash에서 더 효율적으로 만드는 방법에 대한 제안이 있습니까?
미리 감사드립니다.
diff 유틸리티를 사용 하시겠습니까? – dda
일부 코드를 보여 주면 최적화하는 데 도움이 될 수 있습니다. –
나는 당신이 달성하고자하는 것을 얻지 못했지만 설명이 정확하다면이 파일들을 정렬하면 개선 될 것입니다. – vartec