Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 29, 2015 21:02:55

Madcap
От:
Зарегистрирован: 2011-12-04
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Ищу скрипт для сравнения двух файлов и удаления повторов

Добрый день ! Помогите пожалуйста. Я ищу готовый скрипт для допиливания под свои нужды. В общем нужен скриптик, который будет сравнивать строки из двух файлов и удалять повторения строк из первого файла (OLD.txt) во втором файле (NEW.txt). Нужно для автоматизации на работе некоторых задач. Буду очень благодарен откликнувшимся !



Офлайн

#2 Сен. 29, 2015 22:15:46

Madcap
От:
Зарегистрирован: 2011-12-04
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Ищу скрипт для сравнения двух файлов и удаления повторов

input = open('in.txt', 'r')
output = open('out.txt', 'w')
linesarray = input.readlines()
input.close()
seen = []
for line in linesarray:
    if line not in seen:
        seen.append(line)    
 output.writelines(seen)

Есть конечно вот такой код, но задача осложняется тем, что надо сравнить не строки целиком, а логика следующая: есть строка, содержащая IP-адрес и следом идет какой-то мусор, который нас не интересует, в другом файле этот айпишник тоже присутствует в какой-то строке, но за ним мусора не следует. Надо сделать так - если в одном файле присутствует айпишник и во втором файле он тоже есть в строке, то строку из второго файла, содержащую этот айпишник, нужно стереть, а в первом файле оставить все как есть.

Т.е. допустим вот пример строки из файла OLD.txt:
81.149.х.хх:3389;admin;123456 | Country: United Kingdom | State: N/A | City: | ZIP: N/A | ISP: BT |

Вот пример строки из второго файла NEW.txt:
174.127.xx.xx:3389;admin;123456 (т.е. уже в отпарсенном виде тоже самое)

В общем если в двух строках этих двух файлов есть один и тот же айпишник, то из файла NEW нужно его убить вместе со строкой, его содержащей, а OLD оставить без изменений, OLD вообще не трогать )



Отредактировано Madcap (Сен. 29, 2015 22:24:02)

Офлайн

#3 Сен. 30, 2015 05:40:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Ищу скрипт для сравнения двух файлов и удаления повторов

Вообще, это всё через sed + sort + grep быстрее делается.

Через sed выделяются ip из первого файла и копируются в новый файл.
Через sort с опцией -u в новом файле остаются только уникальные ip.
Через grep с опциями -f и -v из второго файла выводятся только строки без отфильтрованных адресов.

И всё это можно сделать за одну строку: новый файл и его фильтрованная версия подаётся по каналам (он даже не сохраняется).



Отредактировано py.user.next (Сен. 30, 2015 05:42:15)

Офлайн

#4 Сен. 30, 2015 14:36:01

giveback
Зарегистрирован: 2015-05-03
Сообщения: 36
Репутация: +  6  -
Профиль   Отправить e-mail  

Ищу скрипт для сравнения двух файлов и удаления повторов

Например вот так:

new_filename = 'NEW.txt'
old_filename = 'OLD.txt'
def get_ip(line):
    return line.split(':')[0]
old_ips = set([get_ip(line) for line in open(old_filename)])
result = [line for line in open(new_filename) if get_ip(line) not in old_ips]
with open(new_filename, 'w') as out:
    out.write(''.join(result))

Отредактировано giveback (Сен. 30, 2015 14:37:11)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version