powershell - 排序对象问题(一个 MAC 地址和两个 IP 地址)
问题描述
我有一个input.csv
文件,里面是例如:
MAC:00-1A-4B-2E-FF-04 IP:10.3.100.62 MAC:00-1A-4B-2E-FF-04 IP:10.14.21.11 MAC:00-1B-78-15-FE-58 IP:10.14.6.24 MAC:00-1B-78-15-FE-58 IP:10.3.128.57 MAC:00-01-E6-35-68-88 IP:10.14.23.15 MAC:00-1B-78-21-AC-36 IP:10.3.88.59
我需要使用Sort-Object MAC -Unique
但output.csv
想要:
MAC:00-1A-4B-2E-FF-04 10.14.21.11 MAC:00-1B-78-15-FE-58 10.14.6.24 00-01-E6-35-68-88 IP:10.14.23.15 00-1B-78-21-AC-36 IP:10.3.88.59
很简单,如果一个 MAC 地址有两个 IP 地址,我总是只需要一个唯一的组合,但总是以 . 开头的 IP 地址10.14.*.*
。
我试试这个:
$getFile = Get-Content $file |
ConvertFrom-Csv -Delimiter ";" -Header "Tiskarna", "Model", "MAC", "IP_adresa", "ID_terminalu" |
Sort-Object -Property MAC, IP_adresa |
ConvertTo-Csv -NoTypeInformation |
% {$_.Replace('"','')} |
Select-Object -SkipLast 1
解决方案
假设您的首选 IP10.14.
总是首先排序,请使用Group-Object
:
# simulating Import-Csv input.csv
$Csv = @"
00-1A-4B-2E-FF-04;10.3.100.62
00-1A-4B-2E-FF-04;10.14.21.11
00-1B-78-15-FE-58;10.14.6.24
00-1B-78-15-FE-58;10.3.128.57
00-01-E6-35-68-88;10.14.23.15
00-1B-78-21-AC-36;10.3.88.59
"@ -split '\r?\n' | ConvertFrom-Csv -Delimiter ';' -Header MAC,IP
$Output = $Csv | Group-Object Mac | ForEach {
$_.Group | Sort-Object IP | Select-Object -First 1
}
$Output
在这里产生:
MAC IP
--- --
00-1A-4B-2E-FF-04 10.14.21.11
00-1B-78-15-FE-58 10.14.6.24
00-01-E6-35-68-88 10.14.23.15
00-1B-78-21-AC-36 10.3.88.59
推荐阅读
- javascript - 验证 superstructjs 中字符串的最大和最小函数长度在哪里?
- python - 将 pandas 中的“H:M:S”字符串转换为日期时间对象
- java - Java中的S3传输管理器初始化非常慢
- c - 为什么我得到一个返回值 3221225477?
- sql - 是否违反 2NF?
- python - Python 绘制关于外星人的问题
- docker-compose - 如何在 docker-compose 中使用包含空格的命令来使用字符串插值?
- firebase - Firebase 子帐号
- python - python ai 聊天机器人给出“nltk 中的类型错误”
- numpy - 为什么高阶函数在 numpy 中不流行