![]() |
REQ: Программа построкового сравнения
Собвственно сабж - нужна прога. Вернее хотя бы ее название БЕЗ ссылок. Ссылки сам найду.
Итак прога: Я ей скармливаю файл. В файле в столбик указаны какие-либо названия (к примеру названия музыкальных релизов). В другом столбике напротив этих названий стоит размер этих релизов. Задаю условие. К примеру - удали мне все строки, где последовательность букв "house". И в итоговом txt или excel файле получаю уже результат БЕЗ строк, в которых встерчалось данное слово и, соответственно, что напротив названия размер тоже удаляется. Пустые строки при сем действии тоже удаляются, т.е. столбик смещается вверх, если был удален релиз. И еще чтобы прога могла также сравнивать два файла ПОСТРОЧНО. Т.е. брать стоку из первого файла и сравнивать ее СО ВСЕМИ строками второго файла. Далее вторую строку и так далее. Результат - файл с теми строками, которых нет в предидущем файле. P.S. Excel в качестве проги не предлогать, имхо работа с формалами не катит. Спасибо. |
Ответ - коммандная стока. Данное можно реализовать средствами ком. строки
|
Посмотри в сторону PowerGrep для поиска/удаления/замены и Araxis Merge для сравнения.
|
Molt, можешь предложить варианты раелизации - предлагай, а флудить не за чем :mad:
|
2 Molt
Приведи пример пожалуйста. |
Цитата:
Цитата:
Тогда берем Compare It! , поддерживает консоль, загоняем в качестве аргументов исходные файлы и получаем на выходе файл, в котором и будет указана разница между первым и вторым файлом. PS - можно и в оконном варианте работать, но насколько я понял тебе лучше один раз посидеть, настроить, и пусть работает - материала много, ручками слишком долго кликать, верно? Ну так опять, в батнике цикл делаешь - и все. В нагрузку можно Synchronize It! - это уже синхронизация каталогов, тоже достаточно большие возможности Для справки. Compare It! Программа для сравнения и слияния текстовых файлов. Выделение различий в строках, встроенный редактор с подсветкой синтаксиса, печать, отчеты, поддержка различных форматов файлов, коммандной строки. |
Я в свое время много такого добра перепробовал - названия все счас и не припомню. Что у всех этих программ было плохо, так это принцип их работы. Т.е. они сравнивали своим особым алгоритмом и получалось иногда очень много лишнего добра.
А что мне нужно получить - мне нужно получить в отдельный файл все те строки, что есть в файле №1, но что отсутствую в файле номре 2. |
На самом дле серьезных прог для сравненения крайне мало :
WinMerge - мой выбор (бесплатная, неплохая функциональность) WinDiff - для странных или очень сложных данных, медленная, кривой фейс. Compare It! UltraCompare Araxis Merge (лично с ней не работал, но стоит она 150 $) Kdor то что тебе надо - лучше всего таки сделать на Екселе. Но можно и коммандной строкой: Цитата:
Molt - флудер ;) |
2 crawler
Спасибо. Но возник вопрос - там именно ПОСТРОКОВОЕ сравнение? Просто вспоминается такая прога, как Active File Compare. В одном окне вводим данные одного файла, а в другом - другого. К примеру данные первого файла Цитата:
Цитата:
P.S. Если есть возможность, то приведи пример как можно сделать сие буйство с помощью excel'я. Только одно НО - в первом файле два столбца (1-ый - название папки-релиза, а 2-ой размер папки), а в другом один столбец (там размер не указан). Поэтому если будет удаляться строка из первого файла, то она должна это делать вместе с размером и потом делать смещение вверх (удаляется и название релиза-папки и ее размер + удаляются пустые строки). |
ВинМерж определил Armin_Pres_Electric_Movement-Intruder__Pound-Promo_Vinyl-2004-POW как передвинутую строку ( надо в опциях указать, чтобы искал сдвинутые блоки ). подсветил коричневым - несовпадающие строки он подсвечивает желтым.
Может на сложных сравнениях тебе и не подойдет, но попробуй по любому. Если сначала сортирнуть строки по алфавиту, то проблем должно быть меньше. Как делать в Екселе - не знаю, но знаю что возможно. Спроси, может кто знаком с VBA, должно быть не очень сложно. |
Часовой пояс GMT +4, время: 18:26. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.