Powershell создает список с разделителями-запятыми из массива IP-адресов, которые происходят $N раз
везде, где я смотрел, показал мне методы этого, которые работают с физическими файлами, но по какой-то причине не с массивом. Я бы предпочел не хранить эти данные, а затем вызывать их из файла и просто работать непосредственно с массивом, если это возможно. Я застрял с помощью PowerShell V2, но это все равно должно быть выполнимо. Я ценю любую помощь заранее.
у меня есть массив называется $net_final
имеет следующие значения:
63.232.3.102
63.232.3.102
64.339.161.5
64.339.161.5
64.339.161.5
64.339.161.5
64.339.161.5
64.339.161.5
19.19.19.19
19.19.19.19
19.19.19.19
19.19.19.19
19.19.19.19
19.19.19.19
19.19.19.19
63.339.161.7
63.339.161.7
63.339.161.7
63.339.161.7
63.339.161.7
затем я делаю следующее, Чтобы получить список IP-адресов, которые происходят 5 или более раз в этом массиве:
($net_final | Group-Object | Where-Object {$_.Count -ge 5} |
Format-Table -HideTableHeaders -Property Name | Out-String).Trim()
что дает мне этот выход:
64.339.161.5
19.19.19.19
63.339.161.7
однако я не могу получить их запятыми, разделенными на одной строке. Создание списка с разделителями-запятыми только из массива довольно несложно с такими вещами, как $net_final -Join ","
и ($net_final | Select-Object -Unique) -Join ","
, но мне нужно захватить элементы массива, которые происходят $N количество раз.
ожидается вывод:
64.339.161.5,19.19.19.19,63.339.161.7
3 ответов
здесь вы идете, славный маленький ОДН-вкладыш для вас:
($net_final|group|?{$_.count -ge 5}|Select -ExpandProperty Name) -join ","
это выведет:
64.339.161.5,19.19.19.19,63.339.161.7
У меня были проблемы с этим решением от TheMadTechnician, но я нашел следующие работы отличными: $my_array -присоединяйтесь ","
еще быстрее / проще читать:
$test = (1,3,7,7,3,2,1)
$($test | sort -Unique) -join ","
1,2,3,7
вы можете передать любой массив в сортировку с флагом-unique для dedupe; обернутая переменная может быть соединена с вашим предпочтительным разделителем.