$groups = Get-Content c:\devices.csv | Group {$_.Substring(0,3)}| %{$_.Group; ""}
AAAGroup1,192.168.1.1
AAAGroup1,192.168.1.2
BBBGroup2,192.168.2.1
BBBGroup2,192.168.2.2
CCCGroup3,192.168.3.1
CCCGroup3,192.168.3.2
我进行了广泛的搜索,只能根据列的选择找到解决方案。要将以上数据输出到每个组一个单独的变量或一个单独的CSV文件中。从技术上讲,每个之间都有一个空格就备用行而言,就我所知就是这样。
$groups = Get-Content c:\devices.csv | Group {$_.Substring(0,3)}| %{$_.Group; ""}
ForEach ($Group in $Groups)...
答案 0 :(得分:2)
提供了一个带有标题Device,IPv4
以下脚本将添加一个名为calculated property
的{{1}},可用于排序,输出到表和Group
或其他内容。
-GroupBy
样本输出
## Q:\Test\2018\07\10\SO_51267179.ps1
$data = Import-Csv '.\devices.csv' |
Select-Object Device,IPv4,@{n='Group';e={$_.Device.Substring(0,3)}}
$data | Format-Table -GroupBy Group
要将每个组输出到自己的.csv
Group: AAA
Device IPv4 Group
------ ---- -----
AAAGroup1 192.168.1.1 AAA
AAAGroup1 192.168.1.2 AAA
...snip...
示例输出:
$data = Import-Csv '.\devices.csv' |
| Group-Object {$_.Device.Substring(0,3)}| ForEach-Object {
$_.Group | Export-Csv "$($_.Name).csv" -NoTypeInformation
}