আমার কাছে একটি ফাইল রয়েছে যা দিনে প্রায় 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
উদাহরণস্বরূপ কোড বিপুল ফাইল greps 10,000 বার, এবং আমি এই লুপ চালানোর পুরো দিনের বেলা এক মিনিট একবার ।
যেহেতু বিশাল ফাইলটি বাড়তে থাকে তাই আমি এই সমস্ত দ্রুত করতে এবং কিছু সিপিইউ সংরক্ষণ করতে কী করতে পারি? আমি ভাবছি যে ফাইলটি কোনওভাবে এর কী দ্বারা বাছাই করা হয়েছে (যদি তা হয় তবে কীভাবে?) বা সরল পাঠ্যের পরিবর্তে একটি ডিবি ব্যবহার করা সাহায্য করবে ...