$regex = '\b(\w+)=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)'
Select-String -LiteralPath $input_path -AllMatches -Pattern $regex | ForEach-Object {
$obj = New-Object pscustomobject
foreach ($match in $_.Matches) {
Add-Member -InputObject $obj -NotePropertyName $match.Groups[1].Value -NotePropertyValue $match.Groups[2].Value
}
$obj
} | Export-Csv -NoTypeInformation $output_file
РЕДАКТИРОВАТЬ по LotPings
Пример вывода вашего обновленного ввода (до вызова Export-Csv
):
src_ip dst_ip tran_src_ip tran_dst_ip
------ ------ ----------- -----------
75.148.000.000 23.24.000.000 192.168.000.000 192.168.000.000
Для извлечения заданного набора свойств по name :
# Use a regex that matches all key-value pairs.
$regex = '\b(\w+)=([^ ]+)'
Select-String -LiteralPath $input_path -AllMatches -Pattern $regex | ForEach-Object {
$obj = New-Object pscustomobject
foreach ($match in $_.Matches) {
Add-Member -InputObject $obj -NotePropertyName $match.Groups[1].Value -NotePropertyValue $match.Groups[2].Value
}
$obj
} | Select-Object *_ip, srczone, src_country_code, dstzone, dst_country_code |
Export-Csv -NoTypeInformation $output_file
Обратите внимание, что сначала создается объект с all свойствами ввода и , а затем выбирает только те, которые представляют интерес, с помощью Select-Object
, что несколько неэффективно, но сохраняет команду концептуально простой и позволяет легко определить извлечение заказа .