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

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

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

Пользователь


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

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


Изменения
Автор: XXXp
Дата: 17-10-2012
есть два файла: 1.csv и 2.csv, необходимо, удалить из файла 2.csv все данные, точные копии которых есть в 1.csv.
Другими словами, файл 1.csv более старый, а 2.csv более новый, необходимо удалить неактуальные данные, которые содержатся уже в 1.csv и были обработаны ранее. В файле 2.csv должно после анализа остаться только новейшие данные, которых в 1.csv нет. Не подскажете, каким образом можно решить такую проблему? Спасибо за любую помощь!

Отправлено: 18:19, 17-10-2012

 

Ветеран


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

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


XXXp, уточните — Вам надо оставить строки, содержащие домены или оставить только домены?

Отправлено: 20:03, 17-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


Прошу прощения, задача, как оказалось, больше не актуальна. Теперь необходима такая вещь:
есть два файла: 1.csv и 2.csv, необходимо, удалить из файла 2.csv все данные, точные копии которых есть в 1.csv.
Другими словами, файл 1.csv более старый, а 2.csv более новый, необходимо удалить неактуальные данные, которые содержатся уже в 1.csv и были обработаны ранее. В файле 2.csv должно после анализа остаться только новейшие данные, которых в 1.csv нет. Не подскажете, каким образом можно решить такую проблему? Спасибо за любую помощь!

З.Ы. Каждый файл .csv весит ~5-6мб, т.е. содержит около 100 000 строк, после анализа должны остаться 3000-4000.

Последний раз редактировалось XXXp, 17-10-2012 в 23:10.


Отправлено: 21:49, 17-10-2012 | #3


Ветеран


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

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


Compare-Object (gc 1.csv) (gc 2.csv) -PassThru | Where {$_.SideIndicator -eq "=>"} | Out-File 3.csv
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:43, 17-10-2012 | #4


Пользователь


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

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


Спасибо, но почему-то не работает, ошибка. The term is not recognized as cmdlet и т.д...

Отправлено: 02:14, 18-10-2012 | #5


Ветеран


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

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


XXXp, у меня работает. Упакуйте «1.csv» и «2.csv» в архив, выложите на обменник, ссылку — сюда.

Если там какая-либо конфиденциальная информация — архив под паролем, ссылку на архив и пароль в личку коллеге Kazun.
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:10, 18-10-2012 | #6


Пользователь


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

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


Прошу прощения, скрипт работает, у меня неправильно был выбран режим powershell
Только он делает не совсем то. Есть два файла 1.csv (более старый, обработанный) и 2.csv (новый, в котором 95% - дубли из 1.csv, которые ранее были обработаны). Необходимо создать такой файл 3.csv, который бы собрал в себя ТОЛЬКО те данные, которые есть в 2.csv, но нету в 1.csv. Цель - дважды не обрабатывать одни и те же данные. Спасибо!

Отправлено: 13:06, 18-10-2012 | #7


Ветеран


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

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


Код: Выделить весь код
PS Z:\> gc 1.csv
Name;LogonName;mail;Department
Name1;LogonName1;mail1;dp1
PS Z:\> gc 2.csv
Name;LogonName;mail;Department
Name1;LogonName1;mail1;dp1
Name2;LogonName2;mail2;dp2
PS Z:\> Compare-Object (gc 1.csv) (gc 2.csv) -PassThru | Where {$_.SideIndicator -eq "=>"}
Name2;LogonName2;mail2;dp2
Приводите примеры,не надо быть голословным.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:21, 18-10-2012 | #8


Пользователь


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

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


Файл 1.csv -http://rusfolder.com/33181055
Файл 2.csv -http://rusfolder.com/33181056

Отправлено: 13:32, 18-10-2012 | #9


Ветеран


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

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


Код: Выделить весь код
$h = @{}
Get-Content 1.csv | Foreach {$h[$_]=1}
Get-Content 2.csv | Where {!$h[$_]} | Out-File 3.csv
У меня получилось 28979 уникальных записей.

PS. С Compare-Object было лень ждать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:00, 18-10-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление файлов нулевого размера, а затем удаление пустых каталогов ilyadud Скриптовые языки администрирования Windows 5 25-08-2012 10:57
CMD/BAT - Поиск слова в тексте, удаление строки, удаление 8 строк выше и 3 строк ниже Alk-13 Скриптовые языки администрирования Windows 0 10-02-2012 18:06
Разное - Удаление лишнего из дистрибутива Windows XP NIK007 Microsoft Windows 2000/XP 3 21-08-2011 21:34
Блог - У вас не найдется лишнего плагинчика? Vadikan Программное обеспечение Windows 2 14-06-2011 12:41
AMD без лишнего шума выпустила видеокарты серии Radeon HD 6700 OSZone News Новости железа 0 21-01-2011 10:30




 
Переход