|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск и удаление дублей в csv-файле |
|
PowerShell - [решено] Поиск и удаление дублей в csv-файле
|
Новый участник Сообщения: 32 |
Профиль | Отправить PM | Цитировать
Доброго времени суток!
Прошу подсказать решение для следующей задачи: Есть csv-файл примерно такого содержания: Необходимо оставить в файле только уникальные записи для условия: тип автомобиля и фирма-производитель без учета модели автомобиля, т.е., например, если в файле есть несколько записей о грузовых автомобиля Тойота, то все эти записи надо удалить или же есть несколько легковых автомобилей Форд - то же удалить. |
|
Отправлено: 07:40, 19-07-2011 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата IvanXXL:
$file="file.csv" $temp="temp.csv" Type $file|Out-File $temp -Encoding "Unicode" $header = "Family","Name1","Name2","Type","Model","ID" $csv = Import-CSV $temp -header $header -delimiter ";" $out = @{} $csv | ForEach-Object { $id = $_.Type +";"+ $_.Model.Split(" ")[0] $line = $_.Family +";"+ $_.Name1 +";"+ $_.Name2 +";"+ $_.Type +";"+ $_.Model +";"+ $_.ID $out[$id]=$line } $out.Values | Out-File $file -Encoding "Default" |
|
Отправлено: 11:53, 19-07-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Скрипт работает, но не совсем так, как хотелось - удалению подлежат все дублирующиеся записи, т.е., например, если по условию "грузовой автомобиль Тойота" найден(ы) дубликат(ы), то удалению подлежат все записи с условием "грузовой автомобиль Тойота". Таким образом после работы скрипта в файле должны остаться записи, изначально не имевшие дублей.
|
Отправлено: 12:24, 19-07-2011 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата IvanXXL:
$file="file.csv" $out = @{};$del = @{} Type $file | ForEach-Object { $list = $_.Split(";") $id = $list[3] +";"+ $list[4].Split(" ")[0] If ($out.ContainsKey($id)) {$del[$id]+=1} $out[$id]=$_.ToString() } $out.Keys | ForEach-Object { If (!$del.ContainsKey($_.ToString())) {$out[$_.ToString()]} } | Out-File $file -Encoding "Default" |
|
Отправлено: 13:04, 19-07-2011 | #4 |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Спасибо. Это именно то, что требовалось.
|
|
Отправлено: 13:14, 19-07-2011 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск, удаление, замена и добавление строк в текстового файле. Что возможно? | akrav | Скриптовые языки администрирования Windows | 8 | 06-12-2015 13:22 | |
CMD/BAT - [решено] Поиск и удаление строки в файле по сложным условиям | m0nkrus | Скриптовые языки администрирования Windows | 9 | 26-06-2011 10:37 | |
CMD/BAT - Строковый поиск в бинарном файле | kt626 | Скриптовые языки администрирования Windows | 1 | 15-10-2009 06:45 | |
C/C++ - [решено] Поиск данных в файле | Luzuk | Программирование и базы данных | 5 | 05-11-2008 04:04 | |
Delphi - Delphi | Ресурсы и поиск в файле | Borislav | Программирование и базы данных | 1 | 10-02-2005 09:30 |
|