2014-02-03 3 views
0

Я столкнулся с проблемой, и я новичок в разработке (но долгое время sys admin).Замена пустых значений в CSV с помощью powershell?

В принципе у меня есть CSV (ну много CSV, но я хочу начать с 1), который содержит несколько пустых полей.

Я надеялся, что смогу использовать powershell для загрузки csv, затем выполнить поиск и заменить, а затем вывести файл, используя следующий код .... Но я не могу указать строку нулевой длины. (По понятным причинам, вы не можете найти ничего, я полагаю) ...

PS C:\Users\Administrator> [io.file]::readalltext("C:\BainesWingData.CSV").replace("","TEST") | Out-File c:\result. 
csv -Encoding ascii -Force 

Все, что я хочу сделать, это заменить пустые поля с «0». Ниже приведен пример CSV. Расположение пустых полей может отличаться.

Timestamp,Baines Wing - 0006.B0006 0006 EM03 (kWh),Baines Wing - 0006.B0006 0006 EM04 (kWh),Baines Wing - 0006.B0006 0006 EM05 (kWh),Baines Wing - 0006.B0016 0006 EM01 (kWh) 
31/01/2014 20:00,,,, 
31/01/2014 20:30,6,8,6,19 
31/01/2014 21:00,5,9,6,19 
31/01/2014 21:30,5,8,6,20 
31/01/2014 22:00,5,8,6,19 
31/01/2014 22:30,6,8,5,20 
31/01/2014 23:00,5,7,6,19 
31/01/2014 23:30,5,8,6,20 
01/02/2014 00:00,5,8,5,19 
01/02/2014 00:30,5,8,6,20 
01/02/2014 01:00,5,8,6,19 
01/02/2014 19:00,5,7,7,19 
01/02/2014 19:30,,,,20 
01/02/2014 20:00,,,, 

Как вы можете видеть, для некоторых строк есть несколько пустых полей. Это нарушает приложение, которое должны считывать эти файлы CSV, поэтому моя цель - придумать скрипт, который работает на этих CSV, чтобы заменить пустые поля только 0.

Может кто-то указать мне в правильном направлении, пожалуйста ?

С уважением Том

ответ

0

не очень элегантно, но это должно работать:

$csv=Import-Csv .\csv.csv -Header "time","EM03","EM02","EM05", "EM01" 
$csv | %{ 
    if($_.EM03 -eq "") {$_.EM03="0"} 
    if($_.EM02 -eq "") {$_.EM02="0"} 
    if($_.EM05 -eq "") {$_.EM05="0"} 
    if($_.EM01 -eq "") {$_.EM01="0"} 
} 
$csv|export-csv .\new.csv -NoTypeInformation 
+0

Привет! Кажется, что он работает, но он все обертывает кавычками на выходном CSV и также, кажется, вставляет две пустые строки в конце файла «" ",,,, " ",,,," любые идеи? – tomstephens89

+1

двойные кавычки генерируются export-csv, если вы не хотите, чтобы они создавали вашу собственную функцию экспорта. Я думаю, у вас есть пустая строка в исходном файле, поэтому у вас есть пустые строки. –

+0

. Ах, да, я вижу сейчас, о, спасибо за отправную точку :-) Я посмотрю, что смогу собрать, теперь я знаю, что это возможно. – tomstephens89

2

Попробуйте заменить ,, с, 0, вместо этого.

+0

К сожалению, я не понимаю, что вы имеете в виду? «,,,» в CSV - это пустые поля, которые я пытаюсь заполнить «0» – tomstephens89

+0

CSV-файл - это просто текстовый файл. ,, не является пустым полем, он просто представляет один, поэтому вы заменяете каждый экземпляр с помощью 0, тем самым заполняя ваши «пустые» поля нулем. – OTTA

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