Посоветуйте file comparer
От: olegkr  
Дата: 09.07.09 15:32
Оценка:
Хочется странного. Есть текстовые файлы с данными, либо в csv, либо с фиксированными колонками. Нужно сравнить оригинал и то, что у нас бэкэнд выдает. Вроде бы все стандартно, но есть одно большое НО. Порядок строк в файлах может не совпадать, например

Файл 1
A
B
C

Файл 2
B
C
A

Попробовал несколько компареров, типа Araxis Merge. Все они считают эти файлы разными, хотя по сути для нас они одинаковые. Поэтому приходится импортить файлы в эксель, сортировать по какому-нить полю, экспортить обратно и уже потом сравнивать. Напрягает так, что готов уже сам что-то написать для сравнения файлов. Но для начала хочу убедиться, что готового решения нет. Сходу в гугле найти не удалось. Может кто знает такую тулзу?
Re: Посоветуйте file comparer
От: Erop Россия  
Дата: 09.07.09 15:52
Оценка:
Здравствуйте, olegkr, Вы писали:

O>Попробовал несколько компареров, типа Araxis Merge. Все они считают эти файлы разными, хотя по сути для нас они одинаковые. Поэтому приходится импортить файлы в эксель, сортировать по какому-нить полю, экспортить обратно и уже потом сравнивать. Напрягает так, что готов уже сам что-то написать для сравнения файлов. Но для начала хочу убедиться, что готового решения нет. Сходу в гугле найти не удалось. Может кто знает такую тулзу?


А файлы большие?
И в какой форме хочешь разницу? Или достаточно просто фака отличия?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Посоветуйте file comparer
От: olegkr  
Дата: 09.07.09 15:55
Оценка:
Здравствуйте, Erop, Вы писали:

E>А файлы большие?

Не. Мелкие. Несколько килобайт.

E>И в какой форме хочешь разницу?

Пофиг. Лишь бы показывало где разница в любом виде, хоть в консоли.
Re[3]: Посоветуйте file comparer
От: Erop Россия  
Дата: 09.07.09 16:08
Оценка: +1
Здравствуйте, olegkr, Вы писали:

O>Пофиг. Лишь бы показывало где разница в любом виде, хоть в консоли.


Ну я бы написал мегаскрипт на перле. Типа первый файл построчно складываем в хэш, потом вторым вычёркиваем. Что осталось -- пишем в stdout...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Посоветуйте file comparer
От: starina_bz  
Дата: 09.07.09 17:37
Оценка: 3 (1)
Здравствуйте, olegkr, Вы писали:

Попробуй Beyond Compare
Re[3]: Посоветуйте file comparer
От: Carrier  
Дата: 09.07.09 17:48
Оценка: 1 (1) +2
Здравствуйте, olegkr, Вы писали:

O>Здравствуйте, Erop, Вы писали:


E>>А файлы большие?

O>Не. Мелкие. Несколько килобайт.

E>>И в какой форме хочешь разницу?

O>Пофиг. Лишь бы показывало где разница в любом виде, хоть в консоли.

Для такого случая, IMHO, проще всего будет отсортировать оба файла тем же sort-ом и потом сравнить diff-ом. По коду возврата можно понять, одинаковые они или нет, а отсортированные и сравнивать проще.
Re[2]: Посоветуйте file comparer
От: olegkr  
Дата: 09.07.09 18:02
Оценка:
Здравствуйте, starina_bz, Вы писали:

_>Попробуй Beyond Compare

Спасибо. Попробовал. Увы, не умеет.
Re[4]: Посоветуйте file comparer
От: olegkr  
Дата: 09.07.09 18:03
Оценка:
Здравствуйте, Carrier, Вы писали:

C>Для такого случая

Это не один случай. Скорее рутина. Видимо придется писать что-то свое.
Re[3]: Посоветуйте file comparer
От: midcyber
Дата: 09.07.09 18:14
Оценка: 3 (1)
Здравствуйте, olegkr, Вы писали:

_>>Попробуй Beyond Compare

O>Спасибо. Попробовал. Увы, не умеет.

Плохо пробовал. Режим Data Compare
Re[5]: Посоветуйте file comparer
От: Carrier  
Дата: 09.07.09 18:19
Оценка:
Здравствуйте, olegkr, Вы писали:

O>Здравствуйте, Carrier, Вы писали:


C>>Для такого случая

O>Это не один случай. Скорее рутина. Видимо придется писать что-то свое.

Тот же diff может сравнивать каталоги, так что вопрос сводится к небольшому скрипту.
Все, что он должен сделать — создать пару каталогов, в один отправить отсортированные файлы КОТОРЫЕ сравнивают, в другой — отсортированные файлы С КАКИМИ сравнивают, и вызвать на каталоги diff. Перебор файлов тоже делается средствами шелла через for. Плюс парсинг результатов. Но, собственно, на этом "свое" и закончится.
Re: Посоветуйте file comparer
От: sc Россия  
Дата: 09.07.09 19:23
Оценка:
Похожий вопрос. А есть ли тулза, которая может находить похожие куски текста в файлах? Практическое применение — рефакторинг, поиск и исключение дублирующего кода (почти одинаковых кусков).
Re[4]: Посоветуйте file comparer
От: olegkr  
Дата: 09.07.09 19:35
Оценка:
Здравствуйте, midcyber, Вы писали:

M>Плохо пробовал. Режим Data Compare

Действительно плохо, не подумал, что этот режим для сравнения текстовых файлов. Спасибо огромное!
Re[2]: Посоветуйте file comparer
От: Carrier  
Дата: 09.07.09 19:39
Оценка:
Здравствуйте, sc, Вы писали:

sc>Похожий вопрос. А есть ли тулза, которая может находить похожие куски текста в файлах? Практическое применение — рефакторинг, поиск и исключение дублирующего кода (почти одинаковых кусков).


Wiki Вам в руки — http://en.wikipedia.org/wiki/Duplicate_code
В конце страницы — список утилит.
На работе используется один из таких тулов, сейчас точно не помню как называется.
Re[5]: Посоветуйте file comparer
От: Iso  
Дата: 10.07.09 05:38
Оценка: 3 (1)
O>Это не один случай. Скорее рутина. Видимо придется писать что-то свое.

Как бы я сделал:

Сейчас у меня есть фалик a.cmd с содержимым "@ПУТЬКФАЙЛУ\Merge.exe %1 %2 %3 %4 %5", чтобы быстро запускать араксис — это тупо удобнее тем, что меньше кнопок нажимать.

Я бы добавил файл as.cmd (сравнить сортированные), который бы имел примерно такое содержимое:

@sort %1 > %TMP%/file1
@sort %2 > %TMP%/file2
@ПУТЬКФАЙЛУ\Merge.exe %TMP%/file1 %TMP%/file2

И таким образом бы легко анализировал реальные отличия файлов.
Это то, что Вам надо?
Re[6]: Посоветуйте file comparer
От: olegkr  
Дата: 10.07.09 14:10
Оценка:
Здравствуйте, Iso, Вы писали:

Iso>Это то, что Вам надо?

Спасибо. Это тоже работает как надо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.