मेरे पास एक फाइल है जो एक दिन में लगभग 200,000 पंक्तियों में बढ़ रही है, और यह तीन लाइनों के ब्लॉक के साथ बनाई गई है जैसे:
1358726575123 # key
Joseph Muller # name
carpenter # job
9973834728345
Andres Smith
student
7836472098652
Mariah Anthony
dentist
अब, मेरे पास एक और फाइल है जिसमें से मैं लगभग 10,000 कुंजी पैटर्न निकालता हूं, जैसे कि 1358726575123
। फिर मैं for
इन पैटर्नों के साथ एक लूप चलाता हूं और उन्हें पहली फाइल के खिलाफ जांचना पड़ता है। यदि फ़ाइल में ऐसा पैटर्न नहीं है, तो मैं पैटर्न को आगे की प्रक्रिया के लिए तीसरी फ़ाइल में सहेजता हूं:
for number in $(grep -o '[0-9]\{12\}' file2); do # finds about 10.000 keys
if ! grep -q ^$number$ file1; then # file1 is a huge file
printf "$number\n" >>file3 # we'll process file3 later
fi
done
उदाहरण कोड एक बड़ी फ़ाइल को 10,000 गुना करता है, और मैं पूरे दिन के दौरान इस लूप को एक मिनट में एक बार चलाता हूं ।
चूंकि विशाल फ़ाइल बढ़ती रहती है, इसलिए मैं यह सब तेजी से करने और कुछ सीपीयू को बचाने के लिए क्या कर सकता हूं? मुझे आश्चर्य है कि क्या फ़ाइल को किसी तरह इसकी कुंजी (यदि ऐसा है, तो कैसे?) या सादे पाठ के बजाय db का उपयोग करने में मदद मिलेगी ...