Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск и удаление дублей в csv-файле

Ответить
Настройки темы
PowerShell - [решено] Поиск и удаление дублей в csv-файле

Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: IvanXXL
Дата: 19-07-2011
Описание: Уточнение задачи
Доброго времени суток!

Прошу подсказать решение для следующей задачи:
Есть csv-файл примерно такого содержания:
Код: Выделить весь код
Иванов;Иван;Иванович;легковой автомобиль;Тойота Камри;а256км
Петров;Петр;Петрович;грузовой автомобиль;Форд Транзит;о678оо
Сидоров;Сидор;Сидорович;грузовой автомобиль;Тойота Дюна;р643тр
Васильев;Василий;Васильевич;легковой автомобиль;Ниссан Алмера;в214тн
Необходимо оставить в файле только уникальные записи для условия: тип автомобиля и фирма-производитель без учета модели автомобиля, т.е., например, если в файле есть несколько записей о грузовых автомобиля Тойота, то все эти записи надо удалить или же есть несколько легковых автомобилей Форд - то же удалить.

Отправлено: 07:40, 19-07-2011

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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
Благодарности: 1

Профиль | Отправить PM | Цитировать


Скрипт работает, но не совсем так, как хотелось - удалению подлежат все дублирующиеся записи, т.е., например, если по условию "грузовой автомобиль Тойота" найден(ы) дубликат(ы), то удалению подлежат все записи с условием "грузовой автомобиль Тойота". Таким образом после работы скрипта в файле должны остаться записи, изначально не имевшие дублей.

Отправлено: 12:24, 19-07-2011 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо. Это именно то, что требовалось.

Отправлено: 13:14, 19-07-2011 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск и удаление дублей в csv-файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход