как получить 2 значения из строки - PullRequest
1 голос
/ 12 апреля 2019

Я надеюсь, что кто-то может помочь мне с чего начать, я хочу извлечь некоторые данные из больших данных. Мои данные выглядят так:

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

В каждой строке есть IP-адрес, начинающийся с10. и MAC-адрес, который находится на конце, вот что я хочу получить.Я гуглил и не уверен, с чего начать / что делать.Является ли Regex подходом или есть лучший способ, любые примеры будут оценены.Заранее спасибо

1 Ответ

2 голосов
/ 12 апреля 2019

вот один из способов получить эту информацию ... [ ухмылка ]

  • поддельное чтение в текстовом файле
    вы, скорее всего, захотите использовать 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-файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...