ডিফ 2 টি ফাইলের মতো একই লাইনের প্রতিবেদন করে


14

আমার কাছে 2 টি ফাইল রয়েছে গানের তালিকা সহ। hdsongs.txt এবং sdsongs.txt

আমি সমস্ত গান এবং আউটপুট টেক্সট ফাইলগুলিতে তালিকাভুক্ত করার জন্য একটি সাধারণ স্ক্রিপ্ট লিখেছিলাম, তারপরে বিপরীতে চালাতে। এটি বেশিরভাগ অংশের জন্য সূক্ষ্মভাবে কাজ করে, তবে স্ক্রিপ্টের আসল ডিফ কমান্ডটি পৃথক হওয়ার মতো একই লাইনটি দেখায়। এটি আসলে একাধিক লাইনের জন্য ঘটছে তবে সমস্ত নয়।

উভয় ফাইলে একটি গানের উদাহরণ এখানে দেওয়া হয়েছে:

$ grep Apologize \*songs\*
hdsongs.txt:Timbaland/Apologize.mp3
sdsongs.txt:Timbaland/Apologize.mp3

এখানে দেখতে পাওয়া যায় এমন কোনও বিশেষ চরিত্র নেই:

$ cat -A hdsongs.txt sdsongs.txt | grep Apologize
Timbaland/Apologize.mp3$
Timbaland/Apologize.mp3$

আমি যখন পৃথকভাবে চালনা করি তখন এটি প্রতিটি ফাইলে একই লাইনটি দেখায়; তবে লাইনগুলো কি এক নয়?

$ diff hdsongs.txt sdsongs.txt | grep Apologize
> Timbaland/Apologize.mp3
< Timbaland/Apologize.mp3

এটি এখানে থ্রেডের অনুরূপ: পৃথক প্রতিবেদন দুটি ফাইলের পৃথক, যদিও সেগুলি একই!

তবে এটি ফাইলের মধ্যে থাকা লাইনগুলির জন্য, পুরো ফাইল নয়, এবং সেখানে রেজোলিউশন এই ক্ষেত্রে উপযুক্ত বলে মনে হয় না।

$ diff <(cat -A phonesongsonly.txt) <(cat -A passportsongsonly.txt) | grep Apologize
< Timbaland/Apologize.mp3$
> Timbaland/Apologize.mp3$

$ wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" hdsongs.txt sdsongs.txt | grep Apologize
>Timbaland/Apologize.mp3
>Timbaland/Apologize.mp3

কেউ কি জানেন যে কেন ডিফ একই লাইনে দু'বার এইভাবে রিপোর্ট করবে?


1
হয়তো hexdumpএই দুটি লাইনের চেষ্টা করে দেখুন কি আলাদা?
ব্যবহারকারী 43791

উত্তর:


24

আমার ধারণা আপনি কেবল ফাইলগুলি বাছাই করেন নি। অমীমাংসিত ইনপুটটিতে পেতে পারেন এমন একটি আচরণ:

$ cat file1 
foo
bar
$ cat file2
bar
foo
$ $ diff file1 file2
1d0
< foo
2a2
> foo

তবে, যদি আপনি সাজান:

$ diff <(sort file1) <(sort file2)
$ 

diffপ্রোগ্রামের কাজ তোমাকে বলতে কিনা দুটি ফাইলের অভিন্ন এবং, যদি না, তারা কোথায় পার্থক্য নেই। এটি বিভিন্ন লাইনের মধ্যে মিল খুঁজে পাওয়ার জন্য ডিজাইন করা হয়নি। যদি এক ফাইলের লাইন এক্স অন্য লাইন এক্সের মতো না হয় তবে ফাইলগুলি একই নয়। তাদের ঠিক একই তথ্য রয়েছে কিনা তা বিবেচ্য নয়, যদি সেই তথ্যটি অন্যভাবে সংগঠিত হয় তবে ফাইলগুলি পৃথক হিসাবে রিপোর্ট করা হয়।


4

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


2

আমি বাইনারি / হেক্সাডেসিমাল আউটপুট পেতে হেক্সডিফ প্রোগ্রামের মতো কিছু ব্যবহার করার চেষ্টা করার পরামর্শ দেব, কারণ মানুষের চোখ সর্বদা একটি কম্পিউটার প্রদর্শিত বর্ণগুলির মধ্যে পার্থক্য বলতে পারে না এবং কিছু অক্ষর প্রদর্শিত নাও হতে পারে।


2
cat -Aমুদ্রণ-বিহীন অক্ষরের বেশিরভাগ ক্ষেত্রে (সমস্ত?) দেখানো হত। আমি নিশ্চিত নই যে এটি কীভাবে ইউনিকোড অদ্ভুততার সাথে লড়াই করেছিল তবে অন্যান্য মুদ্রনবিহীন অক্ষরগুলি দেখানো উচিত ছিল।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.