আমি মাঝারি আকারের (প্রায় 10M-100M লাইন) ট্যাব-বিভাজিত কলাম পাঠ্য ফাইলগুলির সাথে কাজ করার জন্য আমার ইউনিক্স শেলটিতে প্রচুর গ্রেপ অ্যাওক সাজান্ট ব্যবহার করি। এই বিষয়ে ইউনিক্স শেলটি আমার স্প্রেডশিট।
তবে আমার একটি বিশাল সমস্যা আছে, তা হল আইডিগুলির একটি তালিকা দেওয়া রেকর্ড নির্বাচন করা।
রয়ে table.csv
বিন্যাস ফাইল id\tfoo\tbar...
এবং ids.csv
আইডি একটি তালিকা সহ ফাইল, শুধুমাত্র থেকে রেকর্ড নির্বাচন table.csv
মধ্যে ID উপস্থিত সঙ্গে ids.csv
।
/programming/13732295/extract-all-lines-from-text-file-based-on-a-given-list-of-ids এর ধরণ কিন্তু শেল দিয়ে, পার্ল নয়।
grep -F
আইডি ভেরিয়েবল প্রস্থ হলে স্পষ্টতই মিথ্যা ইতিবাচক উত্পাদন ঘটে।
join
এমন একটি ইউটিলিটি যা আমি কখনই বুঝতে পারি না। প্রথমত, এর জন্য বর্ণমালা বাছাই করা দরকার (আমার ফাইলগুলি সাধারণত সংখ্যাগতভাবে বাছাই করা হয়) তবে তারপরেও আমি ভুল অর্ডার সম্পর্কে অভিযোগ না করে এবং কিছু রেকর্ড বাদ না দিয়ে এটিকে কাজ করতে পারি না। সুতরাং আমি এটি পছন্দ করি না। আইডির ^id\t
সংখ্যা বড় হলে -s সহ ফাইলের বিরুদ্ধে গ্রেপ -f খুব ধীর হয়।
awk
কষ্টকর।
এর জন্য কি কোনও ভাল সমাধান আছে? ট্যাব-বিচ্ছিন্ন ফাইলগুলির জন্য কোনও নির্দিষ্ট সরঞ্জাম? অতিরিক্ত কার্যকারিতাও সবচেয়ে স্বাগত জানানো হবে।
ইউপিডি: সংশোধিত sort
->join
awk
।
sort
সমস্ত ধরণের বাছাই, সংখ্যা, বর্ণমালা এবং অন্যান্য করতে পারে others দেখুন man sort
।
grep -f
খুব মন্থর হয়, এই কৌশলটি বজায় রাখার পক্ষে এটি তার চেয়ে বেশি সমস্যার মতো মনে হচ্ছে - বৈচিত্রগুলি সম্ভবত একই ও (এন * এম) পারফরম্যান্স ইস্যুগুলির শিকার হবে। আপনার সময়টি কীভাবে একটি সাধারণীকৃত এসকিউএল ডিবি ব্যবহার করতে হবে তা শেখার জন্য আরও ভাল সময় কাটানো হতে পারে ...