ডিফ, কেবলমাত্র ডান ফাইল থেকে পরিবর্তিত লাইনটি দেখান


24

আমি ফাইল আছে aএবং bআমি আউটপুট লাইন চাই bপরিবর্তন যেহেতু এটি থেকে ক্লোন করা হয়েছিল a। কেবল পরিবর্তিত রেখাগুলি, আশেপাশের প্রসঙ্গ নেই, কোনও অফসেট চিহ্ন নেই।

আমি কীভাবে শেল স্ক্রিপ্টিং ব্যবহার করে এটি করতে পারি? (পাইথন / পার্ল / পিএইচপি / ... নেই)

শেড এবং অ্যাজক গ্রহণযোগ্য সমাধান।

আপাতত, আমি যা করছি তা হ'ল - সাপ্রেস-কমন-লাইনের সাথে আলাদা এবং কেবল সাদা অংশের পরে ডান অংশটি আনতে রিজেক্স ব্যাকরেফারেন্স ব্যবহার করে। আরও ভাল উপায় আছে?

পার্ল ব্যবহার করে (যা নিষিদ্ধ), আমি এই জাতীয় কিছু করব:

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'

উত্তর:


34

জিএনইউ ডিফিউটিলস প্যাকেজের সাথে এটি diffকেবলমাত্র ফাইল বি থেকে লাইনগুলি আউটপুট দেবে যা হয় পরিবর্তন বা নতুন সন্নিবেশিত হয়েছিল:

diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b

4
অসাধারণ. লজ্জাজনক তথ্যটি টেক্সিনফোতে দাফন করা হয়েছে এবং আমি যে ম্যান পেজটি পড়ছিলাম তাতে কোনও ইঙ্গিত দেওয়া হয়নি ..
রোবটিনোসিনো

6

আপনাকে আরও একটি বিকল্প যুক্ত করতে হবে:

grep -vf file1 file2

যদিও এর জন্য লাইনগুলি বাছাই করার প্রয়োজন নেই, আমি মনে করি গ্রেপ আরও অনেক বেশি মেমরি ব্যবহার করে এবং বড় ফাইলগুলির জন্য ক্রাশ হবে।
শ্রীধর সারনোবাত

লাইনগুলিও নকল করা থাকলে কাজ করে না
জেইন

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