计算 IP 地址的出现次数并将结果导出为 CSV



我在CSV文件中有数据,如下所示:

src_ip、dst_ip、tran_src_ip、trans_dst_ip、srczone、src_country_code、dstzone、dst_country_code75.76.77.78,23.24.25.26192.168.1.100192.168.1.18,"WAN",美国,"LOCAL",美国75.76.77.78,23.24.25.26,,192.168.1.21,"WAN",美国,"LOCAL",美国12.13.14.15,23.24.25.26,,192.168.1.21,"WAN",美国,"LOCAL",美国23.24.25.26,23.24.25.26192.168.1.100192.168.1.18,"WAN",",USA,"LOCAL",USA

我希望能够导入该文件,查看src_ip列中的值,并创建一个新的CSV文件,该文件将包含显示src_ip的列,以及该地址在输入文件中显示的次数。

我发现这样的代码可以找到特定的模式,但当我为IP地址输入正则表达式时,它对我来说不太好用。我也不确定如何让它返回IP地址,以及该特定IP的出现次数。

$regex = 'b(w+)=([^ ]+)'    
(Select-String -Path 'input_file.csv' -Pattern $regex -AllMatches |
Select-Object -ExpandProperty Matches).Count

理想情况下,我希望输出看起来像这样。

src_ip,发生75.76.77.78,212.13.14.15,123.24.25.26,1

每当您遇到"在bar中计数foo的出现次数"问题时(特别是如果bar是CSV(,Group-Object通常是您选择的工具:

Import-Csv 'input.csv' |
Group-Object src_ip -NoElement |
Select-Object Name, Count |
Export-Csv 'output.csv' -NoType

如果您想要不同的列标题,请在Select-Object步骤中使用计算属性:

... | Select-Object @{n='src_ip';e={$_.Name}}, @{n='Occurrences';e={$_.Count}} | ...

最新更新