我需要删除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
}
答案 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
这应该注意修剪前两列,然后跳过前两行。