Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2016, 15:58   #1
rediska3
Новичок
Джуниор
 
Регистрация: 22.03.2016
Сообщений: 2
По умолчанию Удалить из файла строки, которые есть в другом файле

Никак не могу решить казалось бы простую задачку.

Файл1:
Код:
allow		192.168.1.2
deny		192.168.1.23
allow		192.168.1.226
allow		192.168.3.6
deny		192.168.4.7
allow		192.168.9.48
Файл2:
Код:
192.168.1.2
192.168.1.226
192.168.4.7
Нужно удалить из Файл1 все строки (полностью), где встречаются IP из Файл2. Причем удалять нужно не совпадения, а уникальные записи, если в Файл2 есть запись "192.168.1.2", то не нужно удалять "192.168.1.21".

Буду благодарен за помощь.
rediska3 вне форума Ответить с цитированием
Старый 22.03.2016, 16:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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

во-вторых, если размер второго файла имеет разумные пределы (ну, скажем, менее 1000 строк), то я бы второй файл загрузил в массив и в нём бы уже проверял построчно.

третье. у Вас попытки решить задачу были? Совсем нечего показать? Кода нет?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.03.2016, 11:11   #3
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Как-то так.

PHP код:
<?php
$arr_file1 
file('file1.txt');
$arr_file2 file('file2.txt');
$i 0;
foreach(
$arr_file1 AS $row){
    
$arr_result explode("        "$row);
    foreach(
$arr_file2 AS $f2){
        if(
$arr_result[1] == $f2){
            unset(
$arr_file1[$i]);
        }
    }
    
$i++;
}
file_put_contents('result.txt'$arr_file1);
Jleksern вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос: в защищенном файле удалить строки. astrofitum Microsoft Office Excel 5 18.07.2013 22:49
Как удалить строки, которые дают в сумме 0? Demon010 Microsoft Office Excel 12 10.06.2011 13:29
Как удалить из ListBox1 строки которые встречаются в ListBox2 Aleksandr Общие вопросы Delphi 8 07.06.2011 15:52
Два текстовых файла. Записать в третий те строки, которые есть и в первом, и во втором файлах (Паскаль) dark999 Паскаль, Turbo Pascal, PascalABC.NET 4 28.03.2011 21:41
Удалить из второй строки те слова, которые есть в первой строке innaa639 Паскаль, Turbo Pascal, PascalABC.NET 2 26.11.2008 15:43