Notepad ++ เปรียบเทียบสองไฟล์และลบ


13

บอกว่าฉันมีสองไฟล์ file1.txt และ file2.txt

ทั้งสองไฟล์มีรายการชื่อแบรนด์รองเท้า (1000+ ชื่อ) เช่นนี้:

brand1 brand2 brand3 ยี่ห้อ ...

ตอนนี้ - ฉันต้องการเปรียบเทียบ file1 กับ file2 ลบรายการ reoccurring ทั้งหมดและแสดงเฉพาะ Whats ใน files1 ที่ไม่ได้อยู่ใน file2 และในทางกลับกัน

เป้าหมายในคำอื่น ๆ คือการดูสิ่งที่ไม่ได้อยู่ในไฟล์ตรงข้ามเนื่องจากรายการเหล่านี้จะถูกพิมพ์ด้วยตนเองใน BackOffice ผลิตภัณฑ์สำหรับสองประเภทที่แตกต่างกันเพื่อให้พวกเขาจะจับคู่ / เหมือนกันในที่สุด


2
IMO นี่จะง่ายกว่าที่จะทำให้สำเร็จใน Excel ถ้าคุณสามารถคัดลอกข้อมูลทั้งหมดของคุณลงในมันหรือบันทึก TXT เป็น CSV สามารถเรียงลำดับลบรายการที่ซ้ำกันได้อย่างง่ายดายและฉันแน่ใจว่าการเปรียบเทียบคอลัมน์จะไม่ทำได้ยากเช่นกัน
Karan

ลิงค์ต่อไปนี้อาจมีประโยชน์: superuser.com/a/290445
akjain

เครื่องมืออื่นจะเหมาะสมหรือไม่ คุณสามารถทำสิ่งนี้ได้อย่างง่ายดายในไพ ธ อนตัวอย่างเช่น (อ่านแต่ละยี่ห้อจากแต่ละไฟล์และบันทึกลงในชุดแล้วพิมพ์ชุด)
Baldrickk

คำตอบ:


8

ปลั๊กอิน "เปรียบเทียบ" ของ Notepad ++ จะทำเคล็ดลับหรือไม่

คุณสามารถติดตั้งได้จากเมนูของ Notepad ++ ปลั๊กอิน => ตัวจัดการปลั๊กอิน => เปรียบเทียบ 1.5.6

นี่คือคำอธิบายอย่างเป็นทางการ: ปลั๊กอิน diff ที่มีประโยชน์มากเพื่อแสดงความแตกต่างระหว่าง 2 ไฟล์ (เคียงข้างกัน) ผู้แต่ง: Ty Landercasper ตอนนี้ดูแลและปรับปรุงโดย Jean-Sebastien Leroy ที่มา: http://sourceforge.net/projects/npp-plugins/files/ComparePlugin/Compare_1_5_5_src.zip/download


2
น่าเสียดายที่ฉันไม่คิดว่ามันจะเป็นเช่นนั้น ปลั๊กอินเปรียบเทียบจะเน้นความแตกต่างระหว่างสองไฟล์เท่านั้น แต่ไม่มีเครื่องมือในการเลือกหรือแก้ไขตามผลลัพธ์ ในขณะที่มีประโยชน์อย่างแน่นอนฉันเกรงว่างานจะน่าเบื่อมากสำหรับชื่อแบรนด์มากกว่าหนึ่งพันชื่อ
Marcks Thomas

3

เป็นคำถามเก่า แต่ ...

  1. เปรียบเทียบไฟล์ใน WinMerge
  2. เครื่องมือ -> สร้าง Patch (บันทึกนี้)
  3. แพทช์มีการเปลี่ยนแปลงจากทั้งสองอย่าง แต่ก็มีมาร์กอัปเพิ่มเติม ใน notepad ++ ให้ทำสิ่งต่อไปนี้แทน:

        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 ใน notepad ++ เลือกทำการเรียงลำดับเครื่องมือ -> ตัวพิมพ์เล็ก / ตัวพิมพ์ใหญ่ / เล็ก (เลือกตัวเลือกเอาต์พุต UNIQUE) หรือแก้ไข -> ลบบรรทัดว่าง

Bit mungy แต่ฉันยังหาเครื่องมือที่จะทำได้ในคลิกเดียว


1

ในการย่อส่วนสองไฟล์ใน notepad ++ ++ (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

คุณสามารถแก้ไขเครื่องหมายได้ถ้าเป็นไปได้ว่า file1 / file2 สามารถมีเส้นเท่ากับเครื่องหมาย ในกรณีนี้คุณจะต้องปรับการแสดงออกปกติ

โดยวิธีการที่คุณสามารถบันทึกแมโครเพื่อทำทุกขั้นตอน (เพิ่มเครื่องหมายเปลี่ยนเป็น file2 คัดลอกเนื้อหาไปยัง file1 ใช้ regex และแม้กระทั่งการทำความสะอาดข้อมูลหลังการ substraction) ด้วยการกดปุ่มเพียงปุ่มเดียว


0

หาก Unix พร้อมใช้งานสำหรับคุณคุณสามารถลองชุดคำสั่งแบบง่าย ๆ เหล่านี้ tr, เรียงลำดับและ comm

ก่อนอื่นทำการแปลงไฟล์จากแนวนอนแยกเป็นแนวตั้ง:

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.