как получить 2 значения из строки

#powershell

#powershell

Вопрос:

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

 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-адрес, который находится в конце, вот что я хочу получить.
Я искал в Google и не уверен, с чего начать / что делать.
Это регулярное выражение, или есть лучший способ, любые примеры будут оценены.
Заранее спасибо

Ответ №1:

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

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

Комментарии:

1. Большое спасибо, Ли, думаю, вы могли бы объяснить мне регулярное выражение, по крайней мере, в приведенном вами примере, или это сложно для концепции?

2. @Билл — добро пожаловать! я не очень хорошо объясняю регулярные выражения, поэтому отсылаю вас к этому сайту … regex101.com //// перейдите туда и вставьте шаблон регулярных выражений в центральное верхнее поле [без окружающих одинарных кавычек], и в Explanation поле в крайнем правом углу будет показано, что делает каждый шаг. ///// если вы хотите увидеть его в действии, вы также можете вставить свой образец в2-е поле в центре. [ усмешка ]