Программа сравнения двух файлов

12
vold57
На сайте с 01.10.2007
Offline
261
979

Вроде простенькая задача, но пока не нашел.

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

Может посоветуете что-то для этого?

Аудит сайтов - главная часть это тщательная ручная работа, а не отчеты сервисов и программ (https://vold57.com/audit). Продвижение сайтов (https://vold57.com/seo)
SX
На сайте с 15.07.2008
Offline
79
#1

на php создаёт файл со списком городов из первого списка которых нет во втором (работоспособность не проверял)

<?

$f1=FILE("f1.txt");
$f2=FILE("f2.txt");

FOR($i=0; $i<COUNT($f2); $i++){
IF((ISSET($f2[$i])) AND ($f2[$i] !== "")){
$f2[$i]=TRIM($f2[$i]);
}}

$result=ARRAY();
FOR($i=0; $i<COUNT($f1); $i++){
IF((ISSET($f1[$i])) AND ($f1[$i] !== "")){
$f1[$i]=TRIM($f1[$i]);
IF(!IN_ARRAY($f1[$i], $f2)){
$result[]=$f1[$i];
}
}}

IF(($result=FOPEN("./result.txt", "w")) AND (FWRITE($result, IMPLODE("\r\n", $result)."\r\n")) AND (FCLOSE($result))){ECHO "OK";}
ELSE{ECHO "ERROR";}
?>
EA
На сайте с 15.06.2006
Offline
70
#2

notepad++ и плагин compare

T
На сайте с 19.09.2012
Offline
29
#3

cmp.php:


<?php

$list1 = file('list1.txt');
$list2 = file('list2.txt');

for ($i=0; $i<count($list2); $i++)
{
$list2[$i] = trim($list2[$i]);
}

for ($i=0; $i<count($list1); $i++)
{
$list1[$i] = trim($list1[$i]);
if($list1[$i]{0} == '+')
{
$list1[$i]=substr($list1[$i], 1);
}
if(empty($list1[$i])) continue;
if(!in_array($list1[$i], $list2))
{
$list1[$i] = '+'.$list1[$i];
}
}

$fp = fopen('list1.txt', 'wt');
if($fp)
{
fputs($fp, join("\n", $list1) . "\n");
fclose($fp);
}

list1.txt:


Москва
Минск
Киев
Астана
Ереван
Ташкент
Душанбе
Ашхабад

list2.txt:


Москва
Минск
Киев
Астана

после выполнения скрипта - list1.txt:


Москва
Минск
Киев
Астана
+Ереван
+Ташкент
+Душанбе
+Ашхабад

Примечание: регистр символов учитывается. Т.е. регистронезависимого сравнения в данном примере нет.

При повторном запуске - элементы из списка 1 до поиска в списке 2 проверяются на наличие "+" перед названием города и чистятся.

SeVlad
На сайте с 03.11.2008
Offline
1609
#4
vold57:
Может посоветуете что-то для этого?

Нормальный файлменеджер, которые должен быть у каждого. Вебмастера - тем более. Под винду - тоталкоммандир например.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
Оптимизайка
На сайте с 11.03.2012
Offline
396
#5

sort <file1.txt >file1-sorted.txt

sort <file2.txt >file2-sorted.txt

diff file1-sorted.txt file2-sorted.txt

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
vold57
На сайте с 01.10.2007
Offline
261
#6

e-art, спасибо. Ваш совет помог.

SpaceX, создается пустой файл result.txt

SeVlad, еще вчера пробовал "сравнить по содержимому" в Тоталкомандере. Так и не смог разобраться.

SeVlad
На сайте с 03.11.2008
Offline
1609
#7
vold57:
Так и не смог разобраться.

Да чё там разбираться -то? Всё ж наглядно, цветами даже выделено.

DV
На сайте с 01.05.2010
Offline
644
#8

Diff самая та программа!

Утилита diff сравнивает содержимое файла1 и файла2, и выдает в стандартный выходной поток список изменений, необходимых для преобразования файла1 в файл2. Этот список должен быть минимальным. Если файлы идентичны, никакие результаты не выдаются.
VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
[Удален]
#9

а что excel уже не устраивает?

vold57
На сайте с 01.10.2007
Offline
261
#10

turen, попробовал сейчас и ваш вариант. Все прекрасно работает. Спасибо.

---------- Добавлено 07.06.2013 в 10:56 ----------

burunduk:
а что excel уже не устраивает?

Excel это не мог конек.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий