fc.exe
পাঠ্য তুলনা করার জন্য এটি আরও ভাল, যেহেতু এটি * নিক্স ডিফের মতো কাজ করার জন্য ডিজাইন করা হয়েছে, যেমন লাইনগুলি যথাক্রমে তুলনা করে প্রকৃত পার্থক্য দেখায় এবং পুনরায় সংশ্লেষিত করার চেষ্টা করে (যদি বিবিধ বিভাগগুলির দৈর্ঘ্য থাকে)। এটিতে কিছু কার্যকর নিয়ন্ত্রণ বিকল্প রয়েছে (পাঠ্য / বাইনারি, কেস সংবেদনশীলতা, লাইন সংখ্যা, পুনরায় সংশ্লেষণের দৈর্ঘ্য, মিল নয় বাফার আকার) এবং প্রস্থান স্থিতি সরবরাহ করে (-1 খারাপ সিনট্যাক্স, 0 টি ফাইল একই, 1 ফাইল পৃথক, 2 ফাইল অনুপস্থিত)। একটি (খুব) পুরানো ডস ইউটিলিটি হওয়ায় এর কয়েকটি সীমাবদ্ধতা রয়েছে। সবচেয়ে উল্লেখযোগ্যভাবে, এটি ইউনিকোডের সাথে স্বয়ংক্রিয়ভাবে কাজ করে না, 0 এসএসআইআই অক্ষরের 0 এমএসবি লাইন টার্মিনেটর হিসাবে বিবেচনা করে তাই ফাইলটি 1 টি অক্ষরের লাইনের অনুক্রম হয়ে যায় (@ টেনেসিক: BOTH ফাইলগুলি নির্দিষ্ট করার জন্য / ইউ বিকল্পটি ইউনিকোড, উইনএক্সপি ব্যবহার করুন) ) এবং এটিতে একটি হার্ড লাইন বাফার আকার 128 টি অক্ষর (128 বাইট ASCII,
তুলনা-অবজেক্টটি 2 বস্তু সদস্য-ভিত্তিক অভিন্ন কিনা তা নির্ধারণের জন্য ডিজাইন করা হয়েছে। যদি বস্তুগুলি সংগ্রহ হয় তবে সেগুলিকে SETS হিসাবে বিবেচনা করা হবে (সহায়তা তুলনা-অবজেক্ট দেখুন), যেমন ডুপ্লিকেট ছাড়াই নিবন্ধযুক্ত সংগ্রহ। অর্ডার বা সদৃশ নির্বিশেষে তাদের যদি একই সদস্য আইটেম থাকে তবে 2 সেট সমান। পার্থক্যগুলির জন্য পাঠ্য ফাইলের তুলনা করার জন্য এটি কঠোরভাবে এর কার্যকারিতা সীমাবদ্ধ করে। প্রথমত, পুরো অবজেক্ট (ফাইল = স্ট্রিং এর স্ট্রিং) ততক্ষণ ডিফল্ট আচরণ পার্থক্যগুলি সংগ্রহ করে এবং এইভাবে পার্থক্যগুলির অবস্থান সম্পর্কিত তথ্য হারাতে এবং কোন পার্থক্যটিকে জোড়া দেওয়া হয়েছে তা অস্পষ্ট করে দেওয়া হয় (এবং কোনও এসইটি-র জন্য লাইন নম্বর সম্পর্কে কোনও ধারণা নেই) স্ট্রিং)। -Synchwindow 0 ব্যবহারের ফলে পার্থক্যগুলি দেখা দেওয়ার সাথে সাথেই তা নির্গত হতে পারে তবে পুনরায় সমন্বয় করার চেষ্টা করা বন্ধ করে দেয় যদি একটি ফাইলের অতিরিক্ত লাইন থাকে তবে পরবর্তী লাইন তুলনাগুলি ব্যর্থ হতে পারে যদিও ফাইলগুলি অন্যভাবে অভিন্ন হয় (যতক্ষণ না কোনও ক্ষতিপূরণ না পাওয়া পর্যন্ত) অন্য ফাইলটিতে অতিরিক্ত লাইন যার ফলে ম্যাচের লাইনগুলিকে পুনরায় তৈরি করা হবে)। তবে পাওয়ারশেল চূড়ান্তভাবে বহুমুখী এবং একটি কার্যকরী ফাইলের তুলনা এই কার্যকারিতাটি ব্যবহার করে করা যায়, যদিও যথেষ্ট জটিলতার ব্যয় করে এবং ফাইলগুলির সামগ্রীতে কিছু সীমাবদ্ধতা রয়েছে। আপনার যদি দীর্ঘ (> 127 অক্ষর) লাইনগুলি এবং যেখানে লাইনগুলি বেশিরভাগ 1 টির সাথে মেলে:
diff (gc file1 | % -begin { $ln1=0 } -process { '{0,6}<<:{1}' -f ++$ln1,$_ }) (gc file2 | % -begin { $ln2=0 } -process { '{0,6}>>:{1}' -f ++$ln2,$_ }) -property { $_.substring(9) } -passthru | sort | out-string -width xx
যেখানে xx দীর্ঘতম রেখার দৈর্ঘ্য + 9
ব্যাখ্যা
(gc file | % -begin { $ln=0 } -process { '{0,6}<<:{1}' -f ++$ln,$_ })
ফাইলের সামগ্রী পেয়ে যায় এবং আলাদা হয়ে যাওয়ার আগে প্রতিটি লাইনে লাইন নম্বর এবং ফাইল সূচক (<< বা >>) প্রিপেন্ড করে।
-property { $_.substring(9) }
প্রথম 9 টি অক্ষর (যা লাইন নম্বর এবং ফাইল সূচক) উপেক্ষা করে প্রতিটি জোড় অবজেক্টের (স্ট্রিংগুলি) তুলনা করতে পৃথককে বলে। এটি কোনও সম্পত্তির নামের পরিবর্তে গণনা করা সম্পত্তি (একটি স্ক্রিপ্ট ব্লকের মান) নির্দিষ্ট করার ক্ষমতা ব্যবহার করে।
-passthru
পৃথক পৃথক ইনপুট অবজেক্টগুলিতে আউটপুট করার কারণে (যার মধ্যে লাইন নম্বর এবং ফাইল সূচক অন্তর্ভুক্ত) পরিবর্তিত তুলনামূলক অবজেক্টগুলির পরিবর্তে (যা না) don't
sort-object
তারপরে সমস্ত লাইনগুলি ক্রমানুসারে রাখে।
আউট স্ট্রিংটি কাটা কাটা এড়ানোর জন্য যথেষ্ট প্রশস্ততা নির্দিষ্ট করে পর্দার প্রস্থে (মার্ক টোয়ারসাপ দ্বারা উল্লিখিত) ফিট করার জন্য আউটপুটটির ডিফল্ট কাটা থামিয়ে দেয়। সাধারণত, এই আউটপুটটি এমন কোনও ফাইলে রাখা হবে যা স্ক্রোলিং সম্পাদক (উদাহরণস্বরূপ নোটপ্যাড) ব্যবহার করে দেখা হবে।
বিঃদ্রঃ
লাইন সংখ্যা বিন্যাস {0,6} একটি সঠিক ন্যায়সঙ্গত, স্পেস প্যাডেড 6 অক্ষর লাইন নম্বর দেয় (বাছাই করার জন্য)। যদি ফাইলগুলির মধ্যে 999,999 টিরও বেশি লাইন থাকে তবে কেবল বিন্যাসটিকে আরও প্রশস্ত করতে পরিবর্তন করুন। এটির জন্য $_.substring
প্যারামিটার (লাইন সংখ্যা প্রস্থের চেয়ে 3 টি বেশি) এবং আউট-স্ট্রিং xx মান (সর্বাধিক লাইনের দৈর্ঘ্য + $_.substring
পরামিতি) পরিবর্তন করা দরকার।