powershell - 如何从字符串中获取2个值
问题描述
我希望有人可以帮助我从哪里开始,我想从一些更大的数据中提取一些数据我的数据如下所示:
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.48.1 = STRING: 36:b:7:0:41:31
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.49.21 = STRING: 3b:fa:a2:us:74:d9
IP-MIB::ipNetToMediaPhysAddress.13600001.10.3.50.22 = STRING: 3b:fa:a2:us:7b:f3
每行都有一个以 10 开头的 IP 地址。最后是 mac 地址,这就是我想要的。我一直在谷歌搜索,不知道从哪里开始/做什么。正则表达式是要走的路,还是有更好的方法,任何例子都将不胜感激。提前致谢
解决方案
这是获取该信息的一种方法... [笑]
在您很可能想要使用的文本文件Get-Content
或某些预先存在的集合中进行虚假阅读。- 遍历集合
- 使用命名捕获组正则表达式匹配 IP 和 MAC
- 从匹配数据创建一个 PSCustomObject,
您可以从$Matches
自动变量中获取它们。 - 发送当前对象以由 $Results 变量收集
- 显示该集合
这是代码...
# fake reading in a text file
# in real life, use Get-Content
$InStuff = @'
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.48.1 = STRING: 36:b:7:0:41:31
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.49.21 = STRING: 3b:fa:a2:us:74:d9
IP-MIB::ipNetToMediaPhysAddress.13600001.10.3.50.22 = STRING: 3b:fa:a2:us:7b:f3
'@ -split [environment]::NewLine
$Results = foreach ($IS_Item in $InStuff)
{
$Null = $IS_Item -match '\.\d{8}\.(?<IPv4>.+) = .+: (?<MacAddress>.+)$'
[PSCustomObject]@{
IPv4 = $Matches.IPv4
MacAddress = $Matches.MacAddress
}
}
$Results
您可以使用Export-CSV
将其发送到结构良好的 CSV 文件。
推荐阅读
- r - 无法安装.packages,错误:权限被拒绝
- iphone - 如何使用 Swift 减少图像位深度(量化)?
- node.js - 如何使用 nodejs 和 twilio 阅读 whatsapp 消息(电话号码 + 正文内容)?
- javascript - 如何通过选择下拉列表自定义表单域?
- javascript - 隐藏反应选择
- swift - 来自 swift 的 Appspot.com API
- google-smart-home - 使用 gaction 更改 Smarthome Action 实现 URL
- c# - 定时器+生产者-消费者
- java - 使用 Comparable 比较泛型变量
- c# - 无需等待即可使用计时器进行模拟