मैं PowerShell सरणी से डुप्लिकेट कैसे निकाल सकता हूं?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
मैं PowerShell सरणी से डुप्लिकेट कैसे निकाल सकता हूं?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
जवाबों:
का प्रयोग करें Select-Object
(जिसका नाम है select
) के साथ -Unique
स्विच; उदाहरण के लिए:
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -Unique
-u
। select -u
मैं एक कमांड लाइन पर इसका उपयोग करूंगा, लेकिन एक कोड में लिखा गया है, यह पूर्ण PS शब्द का उपयोग करने का सुझाव दिया गया है:Select-Object -Unique
एक अन्य विकल्प का उपयोग करना है Sort-Object
(जिसका उपनाम है sort
, लेकिन केवल विंडोज पर) -Unique
स्विच के साथ , जो डुप्लिकेट को हटाने के साथ छंटाई को जोड़ती है:
$a | sort -unique
यदि आप पूरी तरह से बम साबित होना चाहते हैं, तो मैं यही सलाह दूंगा:
@('Apples', 'Apples ', 'APPLES', 'Banana') |
Sort-Object -Property @{Expression={$_.Trim()}} -Unique
आउटपुट:
Apples
Banana
यह Property
पैरामीटर को पहले Trim()
स्ट्रिंग्स का उपयोग करता है , इसलिए अतिरिक्त रिक्त स्थान हटा दिए जाते हैं और फिर केवल -Unique
मानों का चयन करता है ।
अधिक जानकारी पर Sort-Object
:
Get-Help Sort-Object -ShowWindow
Get-Unique
किया , क्योंकि रिक्त स्थान पर काम नहीं किया
$a | sort -unique
यह केस-असंवेदनशील के साथ काम करता है, इसलिए अलग-अलग मामलों के साथ डुप्लिकेट स्ट्रिंग्स को हटा देता है। मेरी समस्या का समाधान किया।
$ServerList = @(
"FS3",
"HQ2",
"hq2"
) | sort -Unique
$ServerList
उपरोक्त आउटपुट:
FS3
HQ2
यदि सूची को क्रमबद्ध किया जाता है, तो आप Get-Unique cmdlet का उपयोग कर सकते हैं :
$a | Get-Unique
मेरी विधि से आप डुप्लिकेट मानों को पूरी तरह से हटा सकते हैं, आपको उस सरणी से मान छोड़ सकते हैं जिसमें केवल 1 की गिनती थी। यह स्पष्ट नहीं था कि यह वही है जो ओपी वास्तव में चाहता था लेकिन मैं इस समाधान का एक उदाहरण ऑनलाइन खोजने में असमर्थ था। यही पर है।
$array=@'
Bananna
Apple
Carrot
Pear
Apricot
Pear
Bananna
'@ -split '\r\n'
($array | Group-Object -NoElement | ?{$_.count -eq 1}).Name
चाहे आप उपयोग कर रहे हों SORT -UNIQUE
, SELECT -UNIQUE
या GET-UNIQUE
पॉवर्सशेल 2.0 से 5.1 तक, दिए गए सभी उदाहरण एकल कॉलम सरणियों पर हैं। मुझे अभी तक यह कहा गया है कि Arrays में कई कॉलमों के साथ कार्य करने के लिए REMOVE डुप्लिकेट पंक्तियों के साथ पंक्ति में पंक्ति की एकल घटनाओं को छोड़ने या वैकल्पिक स्क्रिप्ट समाधान विकसित करने के लिए दोहराएं। इसके बजाय इन cmdlets ने केवल एक एरियर में पंक्तियों को लौटाया है जो ONCE के साथ विलक्षण घटना के साथ हुई और हर चीज को डुप्लिकेट किया। आमतौर पर मुझे रिपोर्ट को समाप्त करने के लिए एक्सेल में अंतिम CSV आउटपुट से मैन्युअल रूप से डुप्लिकेट को निकालना होगा, लेकिन कभी-कभी मैं डुप्लिकेट को हटाने के बाद पॉवर्सशेल के भीतर उक्त डेटा के साथ काम करना जारी रखना चाहूंगा।
Get-Unique
(याgu
) यदि आपका सरणी पहले से ही सॉर्ट किया गया है