প্রশ্ন উইন্ডোজ পাওয়ারশেলের মধ্যে দুটি পাঠ্য ফাইল কিভাবে ছড়িয়ে দিতে পারি?


আমার কাছে দুটি টেক্সট ফাইল রয়েছে এবং উইন্ডোজ পাওয়ারশেল ব্যবহার করে তাদের মধ্যে পার্থক্য খুঁজতে চাই। ইউনিক্স diff টুল অনুরূপ কিছু আছে কি? নাকি অন্য কোন উপায় আমি বিবেচনা করি নি?

আমি তুলনা-বস্তুর চেষ্টা করেছি, কিন্তু এই রহস্যপূর্ণ আউটপুট পেতে:

PS C:\> compare-object one.txt two.txt

InputObject                                                 SideIndicator
-----------                                                 -------------
two.txt                                                     =>
one.txt                                                     <=

75
2018-05-07 03:37


উত্স




উত্তর:


নিজেকে খুঁজে figured। কারণ PowerShell পাঠ্যের পরিবর্তে .net বস্তুর সাথে কাজ করে, আপনি পাঠ্য ফাইলের সামগ্রীগুলি প্রকাশ করার জন্য পেতে সামগ্রী ব্যবহার করতে হবে। তাই আমি যে প্রশ্নটি করার চেষ্টা করছিলাম তা সম্পাদন করার জন্য ব্যবহার করুন:

compare-object (get-content one.txt) (get-content two.txt)

81
2018-05-07 03:51



যখন আমি দুটি ফাইল তুলনা করার চেষ্টা করি তখন আমি অবাক হয়ে গেলাম: সংখ্যাগুলির একটি বিন্যস্ত অ্যারে এবং তাদের সাজানোর পরে সংখ্যাগুলির একই অ্যারে। ফাইল খুব ভিন্ন হচ্ছে সত্ত্বেও কোন আউটপুট আছে। দৃশ্যত, তুলনা-বস্তু আদেশ বিবেচনা করে না। - cgmb
@ সিজিএমবি - আপনি ব্যবহার করতে পারেন -SyncWindow 0 এটি ঠিক করার জন্য, আমি বিশ্বাস করি, যদিও এটি কেবলমাত্র সম্প্রতি উপস্থাপিত হলে আমি নিশ্চিত নই। এটি সম্পর্কে বিশেষ করে স্মার্ট যদিও, যদিও। - James Ruskin


অথবা আপনি ডস ব্যবহার করতে পারে fc তাই কমান্ড (এটি উভয় ফাইলের আউটপুট দেখায় যাতে আপনাকে পার্থক্যগুলি স্ক্যান করতে হবে):

fc.exe filea.txt fileb.txt > diff.txt

fc ফরমেট-কাস্টম cmdlet এর জন্য একটি উপনাম তাই কমান্ডটি প্রবেশ করান নিশ্চিত করুন fc.exe। দয়া করে মনে রাখবেন যে অনেক DOS ইউটিলিটি UTF-8 এনকোডিং পরিচালনা করে না।

আপনি একটি সিএমডি প্রক্রিয়া spawn এবং চালাতে পারেন fc এটার মধ্যে.

start cmd "/c  ""fc filea.txt fileb.txt >diff.txt"""

এই উদ্ধৃতি পরামিতি ব্যবহার করে 'cmd' প্রোগ্রামের সাথে একটি প্রক্রিয়া শুরু করার জন্য পাওয়ারশেলকে নির্দেশ করে। উদ্ধৃতিতে, কমান্ডটি চালানোর এবং সমাপ্ত করার জন্য '/ c' cmd বিকল্পটি রয়েছে। প্রক্রিয়ার মধ্যে cmd দ্বারা চালানো প্রকৃত কমান্ড fc filea.txt fileb.txt ফাইল আউটপুট পুনঃনির্দেশিত diff.txt

আপনি ডস ব্যবহার করতে পারেন fc.exe ক্ষমতাশালী মধ্যে থেকে।


28
2018-05-29 17:52



DOS ^ _ ^ বের করার জন্য +1 - Jeff Bridgman
"fc" আমার জন্য কাজ করছিল না, এবং আমি বুঝতে পারিনি যে এটি ফরম্যাট-কাস্টম থেকে আলাদা করার জন্য আমাকে "fc.exe" হিসাবে উল্লেখ করতে হয়েছে। ঠিক আমি খুঁজছেন ছিল কি. ধন্যবাদ। - Xonatron
হয়তো আমি একটি সম্পূর্ণ philistine, কিন্তু এই আমার কাছে অনেক বেশি ব্যবহারযোগ্য মনে হয়। এটা খুব সুন্দরভাবে আমার সমস্যা সমাধান। - AJ.


এটি করার একটি সহজ উপায় লিখতে হয়:

diff (cat file1) (cat file2)

24
2017-12-12 19:15



ডিফ এবং বিড়াল তুলনা-বস্তু এবং PowerShell- এ পাওয়ার-এর জন্য কেবলমাত্র উপনাম। এটা একই জিনিস। - Shawn Melton
এই গৃহীত উত্তর হিসাবে একই হচ্ছে, আমি এই সিনট্যাক্স ব্যবহার করে আরও পছন্দ - Elijah W. Gagne


* নক্সে diff শেলের অংশ নয়, তবে একটি পৃথক অ্যাপ্লিকেশন।

PowerShell এর অধীনে আপনি diff.exe ব্যবহার করতে পারবেন না কেন?

আপনি UnxUtils প্যাকেজ থেকে একটি সংস্করণ ডাউনলোড করতে পারেন (http://unxutils.sourceforge.net/)


7
2018-05-07 03:56



PowerShell এখন অন্তর্ভুক্ত করা হয়, ডাউনলোড এবং ইনস্টল করার জন্য কিছুই না। - Bratch
আমি শুধু ব্যবহার শেষ পর্যন্ত git diff, কারণ আমি ইতিমধ্যে এটি ইনস্টল ছিল। তন্ন তন্ন fc.exe না Compare-Object আমি প্রত্যাশিত আউটপুট উত্পাদিত। - Raziel


তুলনা-বস্তু (উকিল ডিফার উপনাম) যদি আপনি এটি একটি ইউনিক্স diff মত কিছু আচরণ করার আশা করেন তবে দয়ালু। আমি diff (gc file1) (gc file2) চেষ্টা করেছি, এবং যদি একটি লাইন খুব দীর্ঘ হয়, আমি প্রকৃত diff দেখতে পাচ্ছি না এবং আরো গুরুত্বপূর্ণভাবে, কোন লাইন সংখ্যাটি চলছে তা আমি বলতে পারছি না।

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

আমার পরামর্শ, ফাইলের পার্থক্য খুঁজে পাওয়ার জন্য powerhell ব্যবহার করবেন না। অন্য কেউ যেমন উল্লেখ করেছে, FC কাজ করে এবং তুলনা-বস্তুর তুলনায় একটু ভাল কাজ করে এবং মাইকেজের উল্লেখযোগ্য ইউনিক্স এমুলেটর যেমন বাস্তব সরঞ্জামগুলি ডাউনলোড এবং ব্যবহার করা ভালো।


3
2018-02-18 18:19





WinMerge আরেকটি ভাল GUI- ভিত্তিক diff টুল।


2
2018-05-07 04:58



অতীতে আমি এটা করেছি, যা একটি ম্যানুয়াল প্রক্রিয়া, আমি একটি ছোট স্ক্রিপ্ট দিয়ে প্রতিস্থাপন করতে চেয়েছিলেন। - Bratch


অন্যরা যেমন উল্লেখ করেছেন, আপনি যদি ইউনিক্স-ই ডিফ আউট আউটপুট আশা করেন, তবে পাওয়ারশেল ডিফার উপনামগুলি ব্যবহার করে আপনাকে কঠোর পরিশ্রম করতে হবে। এক জিনিস জন্য, আপনি আসলে ফাইলটি পড়ার জন্য এটির হাত ধরে রাখতে হবে (gc / get-content সহ)। অন্যের জন্য, পার্থক্য নির্দেশক ডান দিক থেকে অনেক দূরে রয়েছে - এটি একটি পঠনযোগ্য দুঃস্বপ্ন।

একটি Sane আউটপুট খুঁজছেন যে কেউ জন্য সমাধান

  1. একটি বাস্তব diff পেতে (যেমন GnuWin32 থেকে)
  2. % USERPROFILE% \ Documents \ Windows \ PowerShhe \ Microsoft \ PowerPhell_profile.ps1 সম্পাদনা করুন
  3. লাইন যোগ করুন

    remove-item alias:diff -force
    

Powershell এই বিশেষ inbuilt উদীয়মান সম্পর্কে বেশ মূল্যবান কারণ -force যুক্তিটি প্রয়োজন। যে কেউ আগ্রহী, GnuWin32 ইনস্টল করা হচ্ছে, আমি আমার powershell প্রফাইল নিম্নলিখিত অন্তর্ভুক্ত:

remove-item alias:rm
remove-item alias:mv
remove-item alias:cp

মূলত কারণ Powershell একসঙ্গে চালানো এবং টাইপ করা আর্গুমেন্ট বুঝতে পারে না, উদাহরণস্বরূপ "RM-Force -Recurse" "RM -rf" এর চেয়ে অনেক বেশি প্রচেষ্টা।

Powershell কিছু চমৎকার বৈশিষ্ট্য আছে, কিন্তু কিছু জিনিস আছে এটা শুধু আমার জন্য করার চেষ্টা করা উচিত নয়।


2
2018-01-28 12:54





সেখানে আছে Windiff যা একটি GUI diff ইন্টারফেস সরবরাহ করে (GUI ভিত্তিক CVS / SVN প্রোগ্রামগুলির সাথে ব্যবহারের জন্য দুর্দান্ত)


1
2018-05-07 04:17