পার্থক্য কেবলমাত্র লাইনের ভিতরে পার্থক্য দেখায়


9

আমি দুটি ফাইলে লাইন তুলনা করতে চাই, তবে আউটপুটে শব্দ কমিয়ে আনতে, আমি চাই লাইনগুলির মধ্যে কেবল প্রকৃত পার্থক্য মুদ্রিত হোক to

উদাহরণস্বরূপ, নীচে দুটি ফাইল দেওয়া:

a.txt

a b c d e f g h i j k l m n o p q r s t u v w x y z

b.txt

a B c d e f g h i j k l m n o p q r s t u v w x y z

(তাদের মধ্যে পার্থক্য হ'ল চিঠির ক্ষেত্রে b)

আমি আউটপুটটি এমন কিছু হতে চাই:

[-b-]{+B+}

বর্তমানে, আমি যে সেরা পদ্ধতির সন্ধান পেয়েছি তা হ'ল ব্যবহার করা git diff --word-diff, তবে এটি পুরো লাইনটিকে আউটপুট করে:

a [-b-]{+B+} c d e f g h i j k l m n o p q r s t u v w x y z

আউটপুটটিকে ম্যানুয়ালি বিশ্লেষণ করা ছাড়া এটি করার কী আরও প্রত্যক্ষ উপায় আছে? এছাড়াও, আদর্শভাবে আমি সাধারণভাবে উপলভ্য এমন কিছু ব্যবহার করতে পছন্দ করব git diff, যেমন একটি পসিক্স শেল সরঞ্জাম যা ব্যবহারকারীর অতিরিক্ত প্যাকেজ ইনস্টল করার প্রয়োজন হয় না।


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

দুঃখিত, আমি লাইনের মধ্যে পার্থক্য বর্ণনা করে একটি নোট যুক্ত করেছি।
anol

কেন শুধু ব্যবহার করবেন না bএবং Bতাই এটি সুস্পষ্ট? আমি বুঝতে পারি এটি সম্ভবত আসল পার্থক্য ছিল, তবে প্রশ্নের প্রয়োজনে আপনি এটিকে আরও সহজ করে তুলতে পারেন।
বারমার

1
আমি এমন সমাধানগুলি এড়াতে চেয়েছিলাম যা কেবলমাত্র ASCII চরিত্রগুলিতে কাজ করবে তবে প্রস্তাবিত সমাধান যেহেতু এর উপর নির্ভর করে না, তাই আমি এটিকে পরিবর্তন করেছি। তবে আমি সম্পাদনাটি characters টি অক্ষরের চেয়ে দীর্ঘতর হওয়ায় নতুন পরিবর্তনগুলি প্রতিবিম্বিত করতে উত্তর আপডেট করতে পারি না।
anol

উত্তর:


14

Wdiff ব্যবহার :

$ wdiff -3 a.txt b.txt

======================================================================
 [-b-] {+B+}
======================================================================

-3অথবা ---no-commonবিকল্প শব্দ দুটি ফাইলের মধ্যে সাধারণ এবং শুধুমাত্র পার্থক্য দেন মুছে ফেলা হবে।

===...ব্যানার (এবং খালি লাইন) সঙ্গে সরিয়ে ফেলা হতে পারে grep:

$ wdiff -3 a.txt b.txt | grep -vx '=*'
 [-b-] {+B+}

wdiffdiffআপনি যদি এটিকে বিকল্প -dবা --diff-inputবিকল্পটি প্রদান করেন তবে একীভূত ডেটাও পড়তে পারে , উদাহরণস্বরূপ git:

git diff somefile | wdiff -d -3

যদিও wdiffপসিক্স সরঞ্জাম নয়, এটি সাধারণত উপলব্ধ।


এটি লক্ষণীয় যে আপনার টার্মিনালটি যদি এএনএসআই পলায়নের সমর্থন করে তবে আপনি ডাব্লুডিডিফ প্রিন্ট অভিনব রঙিন আউটপুট তৈরি করতে পারেন যা আপনার বাশার্কে এটি পড়তে সহজ: alias wdiff="wdiff -n -w $'\033[30;41m' -x $'\033[0m' -y $'\033[30;42m' -z $'\033[0m'"( এখান থেকে নেওয়া )।
scohe001
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.