পাওয়ারশেল অ্যারে থেকে সদৃশ মানগুলি সরানো


উত্তর:


193

স্যুইচ সহ Select-Object(যার উপনাম select) ব্যবহার করুন -Unique; উদাহরণ:

$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -Unique

9
এটি খুব সহজ ছিল :-(। পাওয়ারশেল ২ তে আপনিও ব্যবহার করতে পারেন Get-Unique(বা gu) যদি আপনার অ্যারে ইতিমধ্যে বাছাই করা হয়
জয়ে

2
জোহানেস, গেট-ইউনিকটি ভি 1 এ পাওয়া যায় :)
শ্যা লেভি

2
দুর্দান্ত, এটি সূক্ষ্মভাবে কাজ করে, একটি নোট, আপনি যদি সংক্ষিপ্ত হতে চান, এটি এমনকি ছোট করা যেতে পারে -uselect -uআমি এটি একটি কমান্ড লাইনে ব্যবহার করব, তবে একটি কোডে লিখিত, সম্পূর্ণ পিএস শব্দটি ব্যবহার করার পরামর্শ দেওয়া হয়েছে:Select-Object -Unique
পাপো

এটি কি একক অঙ্ক নিয়ে কাজ করে? অ্যারের একটি বৃহত তালিকার জন্য এটি কাজ করে না বলে মনে হচ্ছে।
গলদেব

85

অন্য বিকল্পটি হ'ল স্যুইচটির সাথে Sort-Object(যার নামটি sortকেবলমাত্র উইন্ডোজে) ব্যবহার করা
-Uniqueহবে, যা সদৃশগুলি অপসারণের সাথে বাছাইয়ের সংমিশ্রণ করে:

$a | sort -unique

2
এটি আমার পরবর্তী সমস্যাও সমাধান করে যা আমি এটিকে কীভাবে সাজান। ধন্যবাদ!
নিবন্ধিত ব্যবহারকারী

2
এটি একটি খুব সামান্য দ্রুত দেখায়।
জিনিও পম্পেও

7

আপনি যদি পুরোপুরি বোমা প্রমাণ হতে চান তবে আমার এই পরামর্শটি হ'ল:

@('Apples', 'Apples ', 'APPLES', 'Banana') | 
    Sort-Object -Property @{Expression={$_.Trim()}} -Unique

আউটপুট:

Apples
Banana

এটি Propertyপ্রথমে Trim()স্ট্রিংগুলির জন্য প্যারামিটার ব্যবহার করে , তাই অতিরিক্ত স্পেসগুলি সরানো হবে এবং তারপরে কেবলমাত্র -Uniqueমানগুলি নির্বাচন করে ।

আরও তথ্য Sort-Object:

Get-Help Sort-Object -ShowWindow

1
দুর্দান্ত উত্তর। আমার ইস্যু সমাধান করেছেন, Get-Uniqueকাজ করেননি কারণ ফাঁকা স্থানগুলি
কলব ক্যানিয়ন

7
$a | sort -unique

এটি কেস-সংবেদনশীল সাথে কাজ করে, অতএব বিভিন্ন ক্ষেত্রে ডুপ্লিকেট স্ট্রিংগুলি সরিয়ে দেয়। আমার সমস্যার সমাধান।

$ServerList = @(
    "FS3",
    "HQ2",
    "hq2"
) | sort -Unique

$ServerList

উপরের ফলাফলগুলি:

FS3
HQ2

এটি একাধিক সদস্যের সাথে অ্যারেগুলির জন্যও ভাল কাজ করে
জোআরড


2

আমার পদ্ধতির সাহায্যে আপনি সম্পূর্ণরূপে সদৃশ মানগুলি মুছে ফেলতে পারবেন, আপনাকে অ্যারে থেকে কেবলমাত্র একটি গণনা রেখেছিল এমন মান দিয়ে রেখে যাবে It এটি ওপি আসলে কী চেয়েছিল এটি স্পষ্ট ছিল না তবে আমি অনলাইনে এই সমাধানের উদাহরণ খুঁজে পেতে পারিনি তাই এটি স্পষ্ট ছিল না was এটা এখানে.

$array=@'
Bananna
Apple
Carrot
Pear
Apricot
Pear
Bananna
'@ -split '\r\n'

($array | Group-Object -NoElement | ?{$_.count -eq 1}).Name

2

আপনি ব্যবহার করছেন SORT -UNIQUE, SELECT -UNIQUEবা GET-UNIQUEপাওয়ারশেল ২.০ থেকে ৫.১ পর্যন্ত, প্রদত্ত সমস্ত উদাহরণ একক কলাম অ্যারেতে রয়েছে। আমি এখনো জুড়ে একাধিক কলাম সঙ্গে অ্যারে ফাংশন এই পেতে আছে REMOVE বলেন কলাম জুড়ে একটি সারি একক ঘটনার ত্যাগ করার ডুপ্লিকেট সারি, বা একটি বিকল্প স্ক্রিপ্ট সমাধান বিকাশ। পরিবর্তে এই সেমিডলেটগুলি কেবলমাত্র একটি অ্যারেতে সারিগুলি ফিরিয়েছে যা একক ঘটনার সাথে অনাবৃত হয়েছিল এবং ডুপ্লিকেটযুক্ত সমস্ত কিছু ফেলে দিয়েছে। সাধারণত প্রতিবেদনটি শেষ করতে আমাকে এক্সেলের চূড়ান্ত সিএসভি আউটপুট থেকে ডুপ্লিকেটগুলি ম্যানুয়ালি সরিয়ে ফেলতে হয়, তবে কখনও কখনও আমি নকলগুলি সরিয়ে নেওয়ার পরে পাওয়ারশেলের মধ্যে থাকা তথ্যের সাথে কাজ চালিয়ে যেতে চাই।


এটি যেখানে হ'ল-অবজেক্টটি কাজে আসে। আপনি প্রথমে তালিকার নীচের অংশটি নীচে সংক্ষিপ্ত করে যেখানে ক্লজ, তারপরে এটি একটি সাজানো-অবজেক্টে পাইপ করুন, বাছাই করতে এক বা একাধিক কলমসন নির্বাচন করুন, এবং সারণি-অবজেক্টটিকে একটি-ইউনিক দিন।
LPChip
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.