Блокнот ++ Порівняйте два файли та видаліть


13

Скажіть, у мене два файли. file1.txt і file2.txt

Обидва файли містять список найменувань взуттєвих марок (1000+ найменувань), наприклад:

brand1 brand2 brand3 бренд ...

Тепер - я хочу порівняти файл1 з файлом2, видалити всі повторювані записи і показати лише те, що у файлах1, що не у файлі2, і навпаки.

Іншими словами, мета полягає в тому, щоб побачити те, що не знаходиться у протилежному файлі, оскільки ці записи будуть вводитись вручну в продуктовий пакет для двох різних категорій, щоб вони в кінці збігалися / були однаковими.


2
IMO це було б набагато простіше здійснити в Excel, якщо ви зможете скопіювати всі свої дані в нього або зберегти TXTs як CSV. Це може легко сортувати, видаляти дублікати, і я впевнений, що порівняння стовпців теж не складе труднощів.
Каран

Наступне посилання може бути корисною: superuser.com/a/290445
akjain

чи підійде інший інструмент? Ви можете зробити це легко в декількох рядках python, наприклад (прочитайте кожну марку з кожного файлу і збережіть у набір, а потім надрукуйте набір)
Baldrickk,

Відповіді:


8

Чи зробив би плагін "Порівняти" Notepad ++?

Ви можете встановити його з меню «Блокнот ++ плагіни» => Менеджер плагінів => Порівняти 1.5.6

Ось офіційний опис: Дуже корисний плагін diff, щоб показати різницю між двома файлами (поруч). Автор: Ty Landercasper, який зараз підтримує і оновлює Жан-Себастьян Лерой Джерело: http://sourceforge.net/projects/npp-plugins/files/ComparePlugin/Compare_1_5_5_src.zip/download


2
На жаль, я не думаю, що це робить. Плагін Порівняти лише підкреслює відмінності між двома файлами, але не пропонує інструментів для вибору або редагування на основі його результатів. Хоча, безумовно, корисно, я боюся, що це завдання все ще дуже стомлює для понад тисячі найменувань брендів.
Марк Томас

3

Старе питання, але ...

  1. Порівняйте файли в WinMerge
  2. Інструменти -> Створити виправлення (зберегти це)
  3. Патч має зміни як від обох, так і з додатковою розміткою. У блокноті ++ виконайте наступні заміни:

        Search Mode:  Regular Expression
        Find What:    ^[0-9-].*$
        Replace With: <blank>
        Replace All
    

    .

        Search Mode:  Regular Expression
        Find What:    (<|>)
        Replace With: <blank>
        Replace All
    
  4. Використовуйте плагін TextFX у блокноті ++ або зробіть сортування Інструменти-> нечутливий до регістру (вибраний варіант UNIQUE), або Редагувати-> Видалити порожні рядки

Трохи mungy, але я ще не знайшов інструмент, який зробить це за один клік.


1

Щоб субстратувати два файли в блокноті ++ (file1 - file2), ви можете дотримуватися цієї процедури:

  1. Додати ----------------------------як колонтитул у file1 (додати щонайменше 10 тире). Це рядок маркера, який відокремлює вміст file1 від file2.
  2. Потім скопіюйте вміст file2 в кінець file1 (після маркера)
  3. Control + H
  4. Пошук: (?m)^\b(.*)\R(?=[\s\S]+-{10,}$[\s\S]+^\1\R)
  5. Замінити на: (leave empty)
  6. Виберіть Regular expressionперемикач
  7. Replace All
  8. Нарешті видаліть колонтитул та вміст file2

Ви можете змінити маркер, якщо можливо, що файл1 / file2 може мати рядки, рівні маркеру. У такому випадку вам доведеться адаптувати регулярний вираз.

До речі, ви навіть можете записати макрос, щоб виконати всі дії (додати маркер, перейти на файл2, скопіювати вміст у файл1, застосувати регулярний вираз і навіть очистити дані після субстракції) одним натисканням кнопки.


0

Якщо Unix доступний для вас, ви можете спробувати ці прості комбінації простих команд; tr, сортування та комм.

Спочатку перетворіть файл з горизонтально відокремленого у вертикально розділений:

tr '[:blank:]' '\n' < file1.txt > /tmp/file1.vertical
tr '[:blank:]' '\n' < file2.txt > /tmp/file2.vertical

Потім сортуйте файли:

sort /tmp/file1.vertical > /tmp/file1.sorted
sort /tmp/file2.vertical > /tmp/file2.sorted

Тепер ви можете бачити, що є у file1, а не у file2

comm -23 /tmp/file1.sorted /tmp/file2.sorted

Або подивіться, що у file2, що не у file1

comm -13 /tmp/file1.sorted /tmp/file2.sorted

Якщо ви хочете, щоб результат був у тому ж горизонтальному форматі, з якого ви почали, ви можете зробити це:

comm -23 /tmp/file1.sorted /tmp/file2.sorted | tr '\n' ' '
comm -13 /tmp/file1.sorted /tmp/file2.sorted | tr '\n' ' '

Закінчивши, ви можете видалити створені тимчасові файли:

rm /tmp/file1.vertical /tmp/file2.vertical /tmp/file1.sorted /tmp/file2.sorted
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.