দুটি বড় টেক্সট ফাইলের পার্থক্য


32

আমার কাছে দুটি বড় ফাইল রয়েছে (প্রতিটি 6 জিবি)। তারা \nবিভাজক হিসাবে লাইনফিডগুলি ( ) সহ অরসোর্টড হয় । আমি কীভাবে তাদের পার্থক্য করতে পারি? এটি 24 ঘন্টা নীচে নেওয়া উচিত।

উত্তর:


45

সর্বাধিক সুস্পষ্ট উত্তর হ'ল ডিফ কমান্ডটি ব্যবহার করা এবং এটির সাথে স্পেস-লার্জ-ফাইলের পরামিতি যুক্ত করা ভাল ধারণা।

diff --speed-large-files a.file b.file

আপনি বাছাই করা ফাইলগুলি উল্লেখ করেছেন যাতে আপনার প্রথমে ফাইলগুলি বাছাই করা দরকার

sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted

আপনি সরাসরি পৃথক মধ্যে দ্বিতীয় ধরণের আউটপুট পাইপ দিয়ে একটি অতিরিক্ত আউটপুট ফাইল তৈরি সংরক্ষণ করতে পারেন

sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -

স্পষ্টতই এগুলি প্রচুর উপলভ্য মেমরির কোনও সিস্টেমে সেরা চলবে এবং আপনার সম্ভবত প্রচুর পরিমাণে ফ্রি ডিস্ক জায়গার প্রয়োজন হবে।

আপনি আগে এগুলি চেষ্টা করেছেন কিনা তা আপনার প্রশ্ন থেকে পরিষ্কার ছিল না। যদি তা হয় তবে কী ভুল হয়েছে (খুব বেশি সময় নিয়েছে ইত্যাদি) তা জানার জন্য সহায়ক হবে। আমি সর্বদা খুঁজে পেয়েছি যে স্টক বাছাই এবং পৃথক কমান্ডগুলি কমপক্ষে পাশাপাশি কাস্টম কমান্ডগুলিও করতে থাকে যদি না এমন কিছু ফাইলের ডোমেন নির্দিষ্ট বৈশিষ্ট্য থাকে যা বিভিন্নভাবে কাজ করা সম্ভব করে তোলে।


2
+1 টি। নামযুক্ত পাইপ সহ আপনি সমস্ত অস্থায়ী ফাইল বাদ দিতে পারেন। ব্যবহার করুন mkfifoতৈরি করতে [ab].file.sortedতাদের জন্য আউটপুট ব্যবহার করার আগে sort। উভয় রাখো sortসঙ্গে গুলি &পটভূমিতে এবং পরিবর্তন জন্য ফাইলের নামের উভয় পাইপ ব্যবহার করুন।
ক্রিসি

15
@ ক্রিসি আপনি এই বাক্য diff <(command 1) <(command 2)
গঠনটি

ধন্যবাদ কাজ করেছেন। আমার কয়েক গিগাবাইট মেমরি চিন্তাভাবনা প্রয়োজন তবে একটি 16 গিগাবাইট অ্যামাজন ইসি 2 উদাহরণটি এটি ঠিক করেছে :)
জোনাসল

7
আমার মতো কেউ যদি ভাবছেন যে <(cmd1) <(cmd2)সিনট্যাক্স কেন কাজ করে (যেমন এটি দুটি বারের স্ট্যান্ডার্ড ইনপুটকে পুনঃনির্দেশ করার মতো মনে হয়!), চেষ্টা করুন echo hello <(cmd1) <(cmd2)। আপনি এমন কিছু দেখতে পাবেন hello /dev/fd/63 /dev/fd/62যা হঠাৎ করে এটি পরিষ্কার করে দেয়;)
অ্যালেক্স

3
আমার অভিজ্ঞতায়, --speed-large-filesআপনার কাছে পর্যাপ্ত র‌্যাম না থাকলে বিকল্পটি সাহায্য করবে না। এছাড়াও, আপনার সংরক্ষণের জন্য যদি কোনও মাল্টি-লাইন রেকর্ড কাঠামো থাকে তবে প্রাক-বাছাই করা কার্যকর নয়। উপরের উল্লিখিত বিকল্পগুলি (ইউনহ্যামার দ্বারা) আকর্ষণীয়, তবে আউটপুট rdiffএবং bsdiffএটি বাইনারি। bdiffহেরলুম টুলবক্স থেকে ইনস্টল করা দাউদিক টাস্কের মতো দেখাচ্ছে (উত্তরাধিকারী ডেভলটুলগুলি, বিলুপ্ত শিরোলেখের ফাইলগুলি দরকার ...)। এটা কি সত্যিই চেষ্টা মূল্য? অন্য বিকল্প আছে?
ক্রিশ্চান পাইটশ

5

ইনপুটগুলি বাছাই করা এবং diffপ্রোগ্রামটি এর ইনপুটগুলি সাজানো হয় তা জানানো একটি বিশাল গতি সরবরাহ করবে। আমি এর diffমতো বিকল্পের সাথে কারও সম্পর্কে জানি না তবে commসাজানো ইনপুট ধরে নিয়েছে এবং এটি যদি আপনার উদ্দেশ্যে যথেষ্ট হয় তবে তা আরও দ্রুত হবে।


commএর জন্য দুর্দান্ত কাজ করেছে, এর আগে এর আগে কখনও শুনেনি তবে দৃশ্যত এটি কোর্টিলগুলিতে।
theferrit32
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.