পাশের বাইরের পার্থক্যগুলির কেবল ডান দিক দেখান


4

আমি এই কাছাকাছি উপায় খুঁজে না বলে মনে হচ্ছে। diff --side-by-sideআউটপুটটির কেবলমাত্র ডান দিক পেতে কোনও ওয়ান-লাইনার রয়েছে ?

উদাহরণ স্বরূপ:

এর জন্য: diff --side-by-side file1 file2আমি এই দুটি ধরণের ফলাফলের দুটিই পেয়েছি:

  2 Africa                            |   3 Africa
  3 America                               3 America    
  3 Asia                                  3 Asia
  4 Antarctica                            4 Antarctica
  4 Oceania                               4 Oceania
  7 Europe                                7 Europe

অথবা

  3 Africa                                3 Africa
  3 America                               3 America
  3 Asia                              <
  4 Antarctica                            4 Antarctica
                                      >   4 Asia
  4 Oceania                               4 Oceania
  8 Europe                                8 Europe

আমি কীভাবে এগুলিতে পরিণত করতে পারি:

| 3 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  7 Europe

এবং এটি যথাক্রমে:

  3 Africa
  3 America
  4 Antarctica
> 4 Asia
  4 Oceania
  8 Europe

নোট করুন যে আমি এর মূল আউটপুট সম্পাদনা diffকরেছি যাতে এটি এই প্রশ্নের মধ্যে যুক্তিযুক্ত হয়। এগুলি টার্মিনালে প্রান্তিকভাবে (কলাম অনুসারে) উপস্থিত হবে তবে আমি তাদের এখানে কিছুটা সামঞ্জস্য করতে হয়েছিল যাতে তারা টার্মিনালে প্রদর্শিত হ'ল (কলামগুলি খুব সহজেই সাজানো থাকে), তবে আপনি এই ইনপুট ফাইলগুলি তৈরি করে আউটপুটটিকে প্রতিলিপি করতে পারেন:

ফাইল 1 সংস্করণ 1

  2 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  7 Europe

ফাইল 2 সংস্করণ 1

  3 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  7 Europe

ফাইল 1 সংস্করণ 2

  3 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  8 Europe

ফাইল 2 সংস্করণ 2

  3 Africa
  3 America
  4 Antarctica
  4 Asia
  4 Oceania
  8 Europe

3 Americaফাইল 2 সংস্করণ 2-এর পরে কি সত্যিই পিছনে সাদা স্থান রয়েছে ? হয় 7 Europeহতে বোঝানো 8 Europe(একই ফাইল)?
স্টিল্ড্রাইভার

@ স্টেলড্রাইভার আপনি ঠিক বলেছেন আমি দুটোই সংশোধন করেছিলাম।
তুলসিন কর্ডোভা

উত্তর:


4

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

$ cat file1v1
  2 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  7 Europe
$ cat file2v1
  3 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  7 Europe

তারপর

$ diff --new-line-format='| %L' --unchanged-line-format='  %L' --old-line-format= file1v1 file2v1
|   3 Africa
    3 America
    3 Asia
    4 Antarctica
    4 Oceania
    7 Europe

যখন দেওয়া

$ cat file1v2
  3 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  8 Europe

$ cat file2v2
  3 Africa
  3 America
  4 Antarctica
  4 Asia
  4 Oceania
  8 Europe

তারপর

$ diff --new-line-format='> %L' --unchanged-line-format='  %L' --old-line-format= file1v2 file2v2
    3 Africa
    3 America
    4 Antarctica
>   4 Asia
    4 Oceania
    8 Europe

+1 দুর্দান্ত উত্তরের জন্য। সমস্যা আমি হাত আগে জানি না তুলনা উত্পাদ হবে |এস, >অথবা boths। নমুনা পাঠ্য ফাইলগুলি নিছক চিত্রণমূলক।
তুলিনস কর্ডোভা

2

এটি আসলে ডানদিকে কলাম, যদিও এটি বামদিকে শেষ হয়। এছাড়াও, এটি খুব কুৎসিত সমাধান এবং আমি নিশ্চিত যে কিছু বুদ্ধিমান লোকেরা আরও ভাল করবে। তবে এখানে যাইহোক:

$ diff --side-by-side file1 file2 | sed -r 's/[^\t]*\t*(.*)/\1/' | sed -r 's/^ *(\||>|<)\t /\1/'

| 3 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  7 Europe

ব্যাখ্যা

  • -r আগে ব্যবহার করুন
  • s/old/new/old`নতুন দিয়ে প্রতিস্থাপন করুন
  • [^\t]* দয়া করে দয়া করে ট্যাব ছাড়া আর কিছু নয়
  • \t* আপনি পছন্দ হিসাবে অনেক ট্যাব
  • (.*) লাইনটিতে কোনও অক্ষরের যে কোনও সংখ্যা, পরের জন্য (সংরক্ষণ করা)
  • \1 আমরা রক্ষা প্যাটার্ন
  • s/^ *(\||>|<)\t /\1/প্রায় কাপড় পরিত্রাণ পেতে |বা >বা <লাইন যে প্রান্তিককরণ ফিক্স পৃথক উপর চরিত্র

+1 দুর্দান্ত উত্তরের জন্য। সমস্যাটি হ'ল তুলনাটি | গুলি,> বা উভয়ই দিবে কিনা তা আমি আগে জানিনা। নমুনা পাঠ্য ফাইলগুলি নিছক চিত্রণমূলক।
তুলাইনস কর্ডোভা

@ তুলিনস কর্ডোভা ধন্যবাদ :) আমি সমস্ত চরিত্রগুলি ধরার জন্য এটি পরিবর্তন করেছি, তবে আমি নিশ্চিত নই যে এটি আপনি যা চান তা ঠিক করে দেয়
Zanna
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.