2016-08-31 6 views
0

У меня возникли проблемы при разборе csv и удалении строк в соответствии с требованием.CSV: Powershell: Удаление строк, содержащих определенное слово в ячейке

  1. Мой формат CSV файл не даже, и есть много столбцов, которые являются пустыми, но я хочу их рассматривать как собственные клетки
  2. CSV имеет несколько строк (не фиксированное количество строк) перед фактический заголовок, а внизу может быть 2 линии. Я хочу, чтобы мой csv начинался с заголовка вместо первой строки.

    Import-Csv file.csv | Get-Member

этот код только дает мне два типа членов, но CSV имеет пример более 20columns

CSV:

1, аб

х, 33,455

пустая строка

х, 12,134

несколько больше линий

е, э, fsdvf

пустых строк

заголовки начинаются здесь, 20 + колонки

Спасибо заранее

+0

У вас там нет CSV. У вас есть куча строк с буквами и запятыми и нет четкой картины. Пока вы не измените это, 'Import-Csv' не сможет вам помочь. – Tomalak

+0

Это csv, который мы получаем из приложения и не можем изменить формат. – A003708

+0

Это не моя мысль. У вас нет CSV. * Вызов * CSV не делает его CSV. – Tomalak

ответ

0

Если вы знаете заголовка (столбцы), вы всегда можете заставить Import-Csv иметь эти столбцы, даже если первая строка файла говорит об обратном:

Import-Csv file.csv -Header One, Two, Three, Four 

Даунсайд является то, что вы в конечном итоге с некоторыми объектами, которые вы, вероятно, не» нужно. качестве альтернативы, вы можете найти строку с заголовком и использовать Get-Content/ConvertFrom-Csv комбо:

$line = Select-String -Path file.csv -Pattern ^One | 
    ForEach-Object LineNumber 
Get-Content -Path file.csv | 
    Select-Object -Skip ($line - 1) | 
    ConvertFrom-Csv 

Регулярное выражение, вероятно, следует быть более многословен, но в целом это должно быть самым простым, что убедительное приложение производит поддельные томов CSV к ней надлежащим.

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