Notepad ++ İki dosyayı karşılaştırın ve kaldırın


13

Diyelim ki iki dosyam var. file1.txt ve file2.txt

Her iki dosya da, aşağıdaki gibi ayakkabı markalarının adının (1000+ ad) bir listesini içerir:

marka1 marka2 marka3 marka ...

Şimdi - Dosya1'i Dosya2 ile karşılaştırmak, tüm tekrarlanan girişleri silmek ve sadece Dosya2'de Dosya2'de olmayanı ve tam tersini göstermek istiyorum.

Diğer bir deyişle, karşıt dosyada olmayanları görmektir, çünkü bu girişler iki farklı kategori için manuel olarak bir ürün arka ofisine yazılır, böylece sonunda aynı olurlar / aynı olurlar.


2
IMO, tüm verilerinizi içine kopyalayabilir veya TXT'leri CSV olarak kaydedebilirseniz, Excel'de bunu başarmak çok daha kolay olacaktır. Kolayca sıralamak, kopyaları kaldırmak ve eminim sütun karşılaştırması da başarmak zor olmaz.
Karan

Aşağıdaki bağlantı yararlı olabilir: superuser.com/a/290445
akjain

farklı bir araç uygun olur mu? Bunu birkaç satırlık pitonda kolayca yapabilirsiniz, örneğin (her markanın her markasını okuyun ve bir sete kaydedin, sonra seti yazdırın)
Baldrickk

Yanıtlar:


8

Notepad ++ eklentisi "Karşılaştır" hile yapar mı?

Notepad ++ plugins => Plugin Manager => Karşılaştır 1.5.6 menüsünden yükleyebilirsiniz

İşte resmi açıklama: 2 dosya (yan yana) arasındaki farkı göstermek için çok kullanışlı bir fark eklentisi. Yazar: Ty Landercasper, Jean-Sebastien Leroy tarafından bakımı ve güncellemesi Kaynak: http://sourceforge.net/projects/npp-plugins/files/ComparePlugin/Compare_1_5_5_src.zip/download


2
Ne yazık ki, sanmıyorum. Karşılaştır eklentisi sadece iki dosya arasındaki farkları vurgular, ancak sonuçlarına göre seçim veya düzenleme yapmak için hiçbir araç sunmaz. Kesinlikle yardımcı olsa da, görev binin üzerinde marka adı için hala çok sıkıcı.
Marcks Thomas

3

Eski bir soru, ama ...

  1. WinMerge'deki dosyaları karşılaştırın
  2. Araçlar -> Yama Oluştur (bunu kaydet)
  3. Düzeltme ekinin her ikisinden de değişiklikler vardır, ancak ek işaretleme de vardır. Notepad ++ uygulamasında aşağıdakilerin yerine geçin:

        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. Notepad ++ içinde TextFX eklentisini kullanın Araçlar-> büyük / küçük harfe duyarlı olmayan bir sıralama yapın (çıktı BENZERSİZ seçeneği seçili) veya Düzenle-> Boş satırları sil

Biraz mungy, ama bunu tek bir tıklamayla yapacak bir araç bulamadım.


1

To substract : Bu prosedürü takip edebilir - (file2 dosya1) ++ not defterinde iki dosya

  1. Ekle ----------------------------dosya1 (eklenti en az 10 çizgi) üzerinde bir altbilgi olarak. Bu, dosya1 içeriğini dosya2'den ayıran işaretçi çizgidir.
  2. Sonra, dosya2 içeriğini dosya1'in sonuna kopyalayın (işaretleyiciden sonra)
  3. Control + H
  4. Arama: (?m)^\b(.*)\R(?=[\s\S]+-{10,}$[\s\S]+^\1\R)
  5. Değiştir: (leave empty)
  6. Regular expressionRadyo düğmesini seç
  7. Replace All
  8. Son olarak altbilgi ve dosya2 içeriğini kaldırın

Dosya1 / dosya2'nin işaretçiye eşit satırlara sahip olması mümkünse işaretçiyi değiştirebilirsiniz. Bu durumda, normal ifadeyi uyarlamanız gerekir.

Bu arada, tek bir düğmeye basarak tüm adımları yapmak için bir makro kaydedebilirsiniz (işaretçiyi ekleyin, dosya2'ye geçin, içeriği dosya1'e kopyalayın, normal ifadeyi uygulayın ve hatta çıkarımdan sonra verileri temizleyin).


0

Unix kullanabiliyorsanız, bu basit komut kombinasyonlarını deneyebilirsiniz; tr, sıralama ve iletişim.

İlk olarak, dosyayı yatay olarak ayrılmış durumdan dikey olarak ayrılmış konuma dönüştürün:

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

Sonra dosyaları sıralayın:

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

Artık dosya1'de dosya2'de olmayanları görebilirsiniz

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

Veya dosya2'de dosya1'de olmayanları görün

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

Çıktının başladığınız yatay biçimde olmasını istiyorsanız, bunu yapabilirsiniz:

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

İşiniz bittiğinde, oluşturduğunuz geçici dosyaları silebilirsiniz:

rm /tmp/file1.vertical /tmp/file2.vertical /tmp/file1.sorted /tmp/file2.sorted
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.