Як обробляти файли? Теорія множин в консолі Linux та на мові програмування Python
Візуалізація: • Генерування всіх можливих діаграм Вен... 0:07 Створення директорії mkdir 0:18 Об'єднання множин Для початку об'єднаємо два файли та виключимо повтори. $ cat A B | sort | uniq $ sort -u A B $ gawk '!seen[$0]++' A B $ grep -h "" A B | sort | uniq 0:48 Перетин множин А тепер визначимо ті елементи, які зустрічаються в обох файлах одночасно. $ cat A B | sort | uniq -d $ sort A B | uniq -d $ grep -hxf A B | sort -u $ sort A B | uniq -c | awk '$1{print $2}' 1:35 Різниця множин Дізнаємося, що є в першому файлі, але немає в другому. $ grep -Fvf B A $ sort A B B | uniq -u $ gawk 'NR==FNR{a[$0];next} !($0 in a)' B A Що є у другому, але немає в першому файлі. $ grep -Fvf A.txt B.txt $ sort A B A | uniq -u $ gawk 'NR==FNR{a[$0];next} !($0 in a)' A B 2:29 Симетрична різниця Покажемо все, окрім збігів. $ cat A B | sort | uniq -u $ sort A B | uniq -u $ sort A.txt B.txt | uniq -c | gawk '$1==1{print $2}' 3:02 Об'єднання множин на Python Об'єднати множини можна за допомогою | пайплайна. print(A | B) Та ще методу union(). A.union(B) result = A.union(B) print(result) 3:31 Перетин множин на Python Визначити перетин множин можна за допомогою оператора і, він пишеться, як амперсанд. В пряму сенсі означає сполучник і. print(A & B) Та ще методу intersection(). A.intersection(B) result = A.intersection(B) print(result) 4:02 Різниця на Python Визначити, що є в першому файлі, але немає в другому можна за допомогою оператора -. print(A - B) print(B - A) Або методу difference(). result = A.difference(B) print(result) Ось буде обернена аб'юнкція. result = B.difference(A) print(result) 4:33 Симетрична різниця на Python print(A ^ B) print(B ^ A) Або методу symmetric_difference(). result = A.symmetric_difference(B) print(result) result = B.symmetric_difference(A) print(result)