
Aragaer
11.09.2018
11:59:08
и .. это достаточно просто сделать

Евгений
11.09.2018
11:59:46
Для вашей задачи:
Обойдите файл2 построчно, запилите на его основе set
Обойдите файл1 построчно, выводя только строки, которых нет в set
???
Profit

Aragaer
11.09.2018
12:00:08
мне не нравится идея сета в 2 миллиона строк

Евгений
11.09.2018
12:00:19
а то с этими трувеями затрахаетесь

Google

Евгений
11.09.2018
12:00:41
ну в смысле, bash-way

ivan
11.09.2018
12:01:17
Поставил ubuntu 18.04
Сделал virtualenv
Когда пытаюсь установить зависимости для проекта получаю
Pip is configured withnlocation that require tls/ssl. However the ssl module in python is not available
Python 2.7.6
Pip 10.0.1

Aragaer
11.09.2018
12:01:21
grep -vFf <(sed -r 's/.*?=//; s/;//' file4) file2 > file5

Tishka17
11.09.2018
12:01:23
А данные не сортированные в файлах?

ivan
11.09.2018
12:01:38
--trusted-host пробовал

Aragaer
11.09.2018
12:01:45
где file4 это результат предыдущего grep без -v

ivan
11.09.2018
12:01:48
How to solve эту проблему с ssl?

Iliya
11.09.2018
12:02:10

Aragaer
11.09.2018
12:02:21
ну оно ничего не модифицирует 8)
должен получиться файл file5 в 1145 строк

Iliya
11.09.2018
12:03:43

Aragaer
11.09.2018
12:03:55
хм

Google

Aragaer
11.09.2018
12:04:05
file4 у тебя точно существует? 8)
а, ну это не тот file4
ща
надо тот, в котором 1296133 строк

Iliya
11.09.2018
12:05:18
что-то не то, в 5 получилось 1297278

Aragaer
11.09.2018
12:06:50
хм
чот не то
у тебя не мак случайно? 8)

ivan
11.09.2018
12:07:35
Ну вот ты спамишь по одному сообщению и никто мне не поможет :(((

Iliya
11.09.2018
12:07:43

Aragaer
11.09.2018
12:08:35
как выглядят строчки в файле, где 1296133 строк?

Iliya
11.09.2018
12:09:17

??
11.09.2018
12:09:43
что просходит с gunicornom ?
https://pastebin.com/MArNf1WG

Aragaer
11.09.2018
12:10:48
сделай head file3 | sed -r 's/.*=//; s/;//'

Iliya
11.09.2018
12:12:03

Aragaer
11.09.2018
12:12:42
ок, они и должны быть
а, не, стоп
sed -i 's/\r//' file3 сделай 8)

Google

Aragaer
11.09.2018
12:13:27
виндовые переносы, блин

Iliya
11.09.2018
12:14:02

slair
11.09.2018
12:14:41
разве это проблема?

Aragaer
11.09.2018
12:14:58
крч ту команду, что была выше, надо так
grep -vFf <(sed -r 's/.*?=//; s/;\r?//' file3) file2 > file5

Вов[А]ныч
11.09.2018
12:15:02
Приветствую, у меня короткий вопрос

Aragaer
11.09.2018
12:15:03
для грепа - да, проблема

slair
11.09.2018
12:15:11
строка за строкой обрабатываешь, стрип перед обработкой

Вов[А]ныч
11.09.2018
12:15:17
В питоне есть структуры данных аля как в С++?

slair
11.09.2018
12:15:22
греп не нужен

Eldar
11.09.2018
12:15:47
читай правила чата

Вов[А]ныч
11.09.2018
12:16:03

Iliya
11.09.2018
12:16:04

Вов[А]ныч
11.09.2018
12:16:08
я так на 1 вопрос забежал

slair
11.09.2018
12:16:10
в топике

Aragaer
11.09.2018
12:16:18
уже больше похоже на правду
короче это строчки, которые присутствуют в file2, но отсутствуют в file1

Eldar
11.09.2018
12:16:47

slair
11.09.2018
12:16:53
питон и с++ вполне похожи, из одного в другой легко переделать программу

Google

Вов[А]ныч
11.09.2018
12:17:03

Aragaer
11.09.2018
12:17:08
как результат, сумма числа строк в file2+file3 не должна равняться числу строк в file1

Iliya
11.09.2018
12:18:44

Basil
11.09.2018
12:21:38
вы второй день с файлами бьётесь, когда уже известно, как я понял, что ни повторы, ни порядок не важны. так скопировать файл 1 в файл 3, где будут сортированные уникальные строчки, потом тоже в файл 4 из 2, потом пройтись параллельным перебором по файлам, и копировать только уникальное из 1.

Valery
11.09.2018
12:22:20

Kallibr44
11.09.2018
12:24:02

Admin
ERROR: S client not available

Kallibr44
11.09.2018
12:24:05
;)

Iliya
11.09.2018
12:27:45

Artsiom
11.09.2018
12:28:18
вы второй день с файлами бьётесь, когда уже известно, как я понял, что ни повторы, ни порядок не важны. так скопировать файл 1 в файл 3, где будут сортированные уникальные строчки, потом тоже в файл 4 из 2, потом пройтись параллельным перебором по файлам, и копировать только уникальное из 1.
with open('file2', 'r') as f:
f2_set = {line for line in f}
with open('file1', 'r') as source, open('result', 'w') as result:
for line in source:
if line not in f2_set:
result.write(f'{line}\n')50 мб легко влезут в память даже мобильного телефона. Работать будет за O(n) по времени.
Почему так нельзя?

Basil
11.09.2018
12:28:30
да не циклами, линейным проходом.

Aragaer
11.09.2018
12:28:53
не верю я в линейный проход
квадрат там будет
но оно и в грепе если что будет квадрат

Basil
11.09.2018
12:29:22

Aragaer
11.09.2018
12:29:34
просто я не вижу смысла писать скрипт на питоне, если можно просто одним коротким грепом все сделать
и ведь сделали
а дальше было убито два дня, чтобы доказать, что это именно то, что требовалось

?? Eugene
11.09.2018
12:30:14

Aragaer
11.09.2018
12:30:28
греп был написан быстрее, чем за минуту 8)

Google

?? Eugene
11.09.2018
12:30:42
и применен спустя 2 дня

Aragaer
11.09.2018
12:31:20
неа, сразу же. А два дня, чтобы убедить, что это правильный результат

Basil
11.09.2018
12:31:43
откуда квадрат, если они уже отсортированы. сравниваем первые элементы, скользим, по меньшему до смены знака, переключаем индекс скольжения. при этом переносим в резултьтат только то, что не нашлось во втором.

?? Eugene
11.09.2018
12:31:55

slair
11.09.2018
12:32:31
а то что греп виснет на некоторых запросах и жрёт всю оперативку

Aragaer
11.09.2018
12:32:42
потому что сортировка

Iliya
11.09.2018
12:33:15

slair
11.09.2018
12:33:18
регекспы - зло, их надо по минимому юзать

Aragaer
11.09.2018
12:33:32

Semyon
11.09.2018
12:33:40

Basil
11.09.2018
12:33:41

Aragaer
11.09.2018
12:33:47
а там поэтому и был -F - fixed string

?? Eugene
11.09.2018
12:33:56

slair
11.09.2018
12:34:17

Iliya
11.09.2018
12:34:23
@aragaer Кстати, а как проверить есть ли определенные строки в файле, ты писал выше но я потерял, мне еще 400 строк надо найти есть они или нет в финальном файле

Valery
11.09.2018
12:34:26
всего хорошо в меру ?

Aragaer
11.09.2018
12:34:58
у тебя есть список строк и ты хочешь проверить, есть ли они в файле?