2014-12-05 3 views
0

Мне нужно удалить первые два столбца в CSV. Я не знаю заголовков, они не статичны. Я понял, как удалить первые две строки, но не первые два столбца. Пример кода я работаю с нижеУдалить первые два столбца в CSV с помощью PowerShell

$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

Я собирался передать вам свой вопрос. http://stackoverflow.com/questions/27320245/manipulating-csv-data-with-powershell. Ответ почти есть. – Matt

+0

В коде вы уже определили, какие столбцы попадают в файл CSV. Все, что вам нужно сделать, это управлять этим '$ headers [$ i .. ($ i + $ step-1)]' –

+0

Если вы просто хотите удалить первые 2 столбца, а затем разделите остальные в группах по 4, выберите один из ответы здесь. Если вы хотите, чтобы столбцы удалялись из первого CSV (оставив только 2 столбца в этом CSV), см. Мой ответ на ваш комментарий [здесь] (http://stackoverflow.com/a/27321887/1630171). –

ответ

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 

Это должно заботиться о обрезке от первых 2 колонки, а затем пропуская первые 2 строки.

4

Если вы хотите, чтобы пропустить первые X столбцов вам просто нужно настроить ваш $headers заявление

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

выше будет пропустить первые 2 колонки, не обрабатывая первые 2 заголовка. Остальные группы колонок код будет от 4 после того, как те 2.

2

Я думаю, просто изменив 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 
} 
+0

@AnsgarWiechers, спасибо за редактирование! Я, по-видимому, потерял рассудок, когда пытался отформатировать ответ. –

Смежные вопросы