#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-е поле в центре. [ усмешка ]