1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp So sánh & xóa tất cả dữ liệu trùng trong 2 files

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi banbeit, 14/2/17.

  1. banbeit

    banbeit Thành viên mới
    • 3/6

    Tham gia ngày:
    21/9/15
    Bài viết:
    5
    Đã được thích:
    6
    Chào anh em,
    Mình có 02 file: test1.txttest2.txt
    Mỗi files có tầm 200.000 dòng ^^!
    Giờ mình cần so sánh 2 file này và xuất lại các giá trị không trùng nhau qua test3.txt

    Do mình mới mò AutoIT nên không biết nhiều, mong anh em chỉ giáo!

    -------------------------------------

    Do mình chưa biết so sánh 2 files nên mình copy lại thành 1 file duy nhất (> 400.000 dòng) , sau đó mình lọc file:

    #Include <File.au3>
    #include <Array.au3>
    Dim $oFile,$nFile

    _FileReadToArray("test_data.txt",$oFile)
    $nFile = _ArrayUnique($oFile)
    _FileWriteFromArray("test_data_new.txt",$nFile)

    Nhưng mình cần DỮ LIỆU KHÔNG TRÙNG LẶP giữa 2 file đó nên code trên xem như chưa hoạt động đúng ý muốn. :)
     
    Chỉnh sửa cuối: 16/2/17
    kamsamita1 thích bài này.
  2. LVT491

    LVT491 Thành viên
    • 18/23

    Tham gia ngày:
    22/12/16
    Bài viết:
    46
    Đã được thích:
    26
    Làm 2 vòng lặp lồng nhau ý bạn. So sánh lần lượt các dòng của file 1 với file 2 nếu khác thì xuất dòng đó sang 1 file khác
     
    kamsamita1 thích bài này.
  3. Hồ Khánh Vũ

    Hồ Khánh Vũ Thành viên mới
    • 3/6

    Tham gia ngày:
    24/1/16
    Bài viết:
    13
    Đã được thích:
    22
    Mình nói thì có hơi khó hiểu một chút :
    Nếu như chạy giữa từng dòng sẽ mất độ phức tạp là : O(n*n*l) với n là số dòng và l là độ dài của dòng
    Khi n lên đến 200000 và mỗi dòng chỉ cần 1 kí tự thôi thì cũng lên 200000^2 lần rồi, chạy rất lâu
    Cách 2 :
    Bác lưu dữ liệu từng dòng trước ( dòng thứ bao nhiêu , ... ) rồi gộp dữ liệu 2 file lại với nhau, sắp xếp lại, những kí tự liền kề nhau mà giống nhau -> trùng, xóa
    Đpt ( O(n*log(n)*l) cũng cao
    Cách 3 :
    Sử dụng Trie lưu dữ liệu và so sánh
    Đpt (O(n*l)) Rất là thấp ạ
     
    kamsamita1 thích bài này.
  4. banbeit

    banbeit Thành viên mới
    • 3/6

    Tham gia ngày:
    21/9/15
    Bài viết:
    5
    Đã được thích:
    6
    Do hơi phức tạp nên mình đã giải quyết vấn đề bằng SQL

    1/ Tạo các table tương ứng với các files data, import dữ liệu vào.
    2/ Query ra các DỮ LIỆU KHÔNG TRÙNG NHAU giữa các tables.

    Cảm ơn anh em. :)
     
    kamsamita1 and Hồ Khánh Vũ like this.
  5. cuanp79

    cuanp79 Thành viên mới
    • 3/6

    Tham gia ngày:
    2/6/18
    Bài viết:
    6
    Đã được thích:
    1
    Bác có thể share hoặc gợi ý e đoạn code bằng php dc k ạ? e cũng định làm như bác, e cài xamp và tạo mysql. e hơi gà mờ trong việc xử lý dữ liệu với sql
     

Chia sẻ trang này

Đang tải...