使用PowerShell删除CSV中的前两列

时间:2014-12-05 19:44:16

标签: powershell

我需要删除CSV中的前两列。我不知道标题名称,它们不是静态的。我想出了如何删除前两行,但不是前两列。我正在使用的示例代码位于

之下
$csv     = Import-Csv 'input.csv'
$headers = $csv[0].PSObject.Properties | select -Expand Name
$step    = 4

for ($i = 0; $i -lt $headers.Count; $i += $step) {
  $csv | select $headers[$i..($i+$step-1)] |
    Export-Csv "output_$($i/$step).csv" -NoType
}

3 个答案:

答案 0 :(得分:4)

如果您想跳过前X列,只需调整$headers声明

即可
$headers = $csv[0].PSObject.Properties | select -Skip 2 -Expand Name

以上将通过不处理前2个标题跳过前2列。其余的代码将在那些2之后对4列进行分组。

答案 1 :(得分:2)

我认为只需将for循环中的0更改为2即可:

$csv     = Import-Csv 'input.csv'
$headers = $csv[0].PSObject.Properties | select -Expand Name
$step    = 4

for ($i = 2; $i -lt $headers.Count; $i += $step) {
  $csv | select $headers[$i..($i+$step-1)] |
    Export-Csv "new_output_$($i/$step).csv" -NoType
}

答案 2 :(得分:1)

这似乎有效:

$csv     = Import-Csv 'input.csv'
$include = $csv[0].psobject.properties | select -ExpandProperty Name -Skip 2
$csv | select $include -skip 2 | export-csv output.csv -NoTypeInformation

这应该注意修剪前两列,然后跳过前两行。