子串化CSV标头以创建新标头

时间:2017-09-25 14:45:13

标签: powershell csv

我有一个没有标题的CSV文件,所以我添加标题:

$file = "<path to file>"
$list = Import-Csv $file -Header Unit, IP, Hostname

结果如下:

Unit               IP           Hostname
----               --           --------  
1234 Camden London 192.168.1.1  Server1

我希望给“Camden London”它自己的标题,同时保持“1234”到“单位”列。

Unit Town          IP           Hostname
---- ----          --           --------  
1234 Camden London 192.168.1.1  Server1

我可以将它们分成自己的列表,但不知道从哪里开始与Import-Csv内联 - 有人可以帮忙吗?

$Unit = $list | Select {$_.Unit.Substring(0,4)}
$Town = $list | Select {$_.Unit.Substring(5)}

2 个答案:

答案 0 :(得分:2)

使用calculated properties创建拆分字段并排除原始Unit字段:

Import-Csv $file -Header Unit, IP, Hostname |
    Select-Object -Property @{n='Unit';e={$_.Unit.Substring(0,4)}},
        @{n='Town';e={$_.Unit.Substring(5)}}, * -Exclude Unit

答案 1 :(得分:0)

或者您可以重新创建对象:

Import-Csv $file -Header Unit, IP, Hostname | %{
[pscustomobject]@{
    Unit=$_.Unit.Substring(0,4)
    Town=$_.Unit.Substring(5)
    IP=$_.IP
    Hostname=$_.Hostname
}

}