পৃথক - আউটপুট লাইন সংখ্যা


25

আমি ফাইলের তুলনার জন্য ক্লিপ সরঞ্জামটি ব্যবহার করতে চাই এবং আউটপুট লাইনের আগে লাইন নম্বর দরকার যার সাহায্যে আমি লাইন পার্থক্যে ঝাঁপিয়ে পড়তে পারি, কারণ আমি এমন সরঞ্জামটি ব্যবহার করি যা বুঝতে পারে কোথায় লাফ দিতে হবে, যদি লাইনটি এভাবে শুরু হয় তবে :line-number: regular line contents

তাই আমি চেষ্টা করেছিলাম diff, এবং ডকুমেন্টেশন পড়া মনে হচ্ছে এটি সম্ভবত সম্ভব:

  -D, --ifdef=NAME                output merged file with `#ifdef NAME' diffs
      --GTYPE-group-format=GFMT   format GTYPE input groups with GFMT
      --line-format=LFMT          format all input lines with LFMT
      --LTYPE-line-format=LFMT    format LTYPE input lines with LFMT
    These format options provide fine-grained control over the output
      of diff, generalizing -D/--ifdef.
    LTYPE is `old', `new', or `unchanged'.  GTYPE is LTYPE or `changed'.
    GFMT (only) may contain:
      %<  lines from FILE1
      %>  lines from FILE2
      %=  lines common to FILE1 and FILE2
      %[-][WIDTH][.[PREC]]{doxX}LETTER  printf-style spec for LETTER
        LETTERs are as follows for new group, lower case for old group:
          F  first line number
          L  last line number
          N  number of lines = L-F+1
          E  F-1
          M  L+1
      %(A=B?T:E)  if A equals B then T else E
    LFMT (only) may contain:
      %L  contents of line
      %l  contents of line, excluding any trailing newline
      %[-][WIDTH][.[PREC]]{doxX}n  printf-style spec for input line number
    Both GFMT and LFMT may contain:
      %%  %
      %c'C'  the single character C
      %c'\OOO'  the character with octal code OOO
      C    the character C (other characters represent themselves)

তবে এই জটিল সুইচ সম্পর্কে কোনও উদাহরণ বা ব্যাখ্যা নেই।

এর থেকে আউটপুট পাওয়া কি সম্ভব diff? যদি তাই হয়, কিভাবে?

উত্তর:


45

হ্যা এটা সম্ভব. এই বিকল্পগুলি ব্যবহার করার সময়, ডিফল্টটি কেবল প্রতিটি লাইনের মুদ্রণ করতে হয়। এটি খুব ভার্বোজ, এবং আপনি যা চান তা নয়।

diff --unchanged-line-format=""

অপরিবর্তিত রেখাগুলি দূর করবে, সুতরাং এখন কেবলমাত্র পুরানো এবং নতুন লাইন তৈরি করা হবে।

diff --unchanged-line-format="" --new-line-format=":%dn: %L"

এখন নতুন উপস্থাগুলি উপস্থাপিত :<linenumber>:এবং একটি স্থান প্রদর্শন করবে , তবে এখনও পুরাতন রেখাগুলি মুদ্রণ করবে। ধরে নিই যে আপনি এগুলি মুছে ফেলতে চান,

diff --unchanged-line-format="" --old-line-format="" --new-line-format=":%dn: %L"

আপনি যদি নতুনগুলি মুদ্রণের পরিবর্তে পুরানো রেখাগুলি চান তবে এগুলি চারপাশে অদলবদল করুন।


শুধু মহান! ধন্যবাদ :) সাহায্যের তালিকা থেকে অনুমান করার চেষ্টা করেছি, তবে ডাব্লু / ও সাফল্য, এবং ভেবেছিলাম আমি এটি ভুলভাবে লিখেছি। তারপরে আমি পাইথনের সাথে যা চাইছিলাম তা তৈরি করেছিলাম ( difflibতালিকার অবজেক্টে প্রতি লাইন প্রতি ইন্ডেক্সযুক্ত ফাইল সহ মডিউল) যা আমি diff <(pipe buffer1) <(pipe buffer2)পাইথনের সাথে ব্যবহার করতে পারিনি , যেমন আমি প্ল্যান করেছি diff। এখন আপনি আমাকে বাঁচিয়েছেন :)
zetah

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