Tôi có tệp csv 40 MB với 50.000 bản ghi. Đó là một danh sách sản phẩm khổng lồ. Mỗi hàng có gần 20 trường. [Mã số, UPC, Mô tả, v.v.]Tập lệnh để tìm các bản sao trong tệp csv
Làm cách nào để có thể,
a) Tìm và in hàng trùng lặp. [Tệp này là một tệp được nối thêm lớn, vì vậy tôi có nhiều tiêu đề được bao gồm trong tệp mà tôi cần xóa, vì vậy tôi muốn biết các hàng chính xác trùng lặp trước tiên.]
b) Tìm và in các hàng trùng lặp dựa trên một cột. [Xem liệu UPC có được gán cho nhiều sản phẩm hay không]
Tôi cần chạy lệnh hoặc tập lệnh trên máy chủ và tôi đã cài đặt Perl và Python. Ngay cả bash script hoặc lệnh sẽ làm việc cho tôi quá.
Tôi không cần phải giữ nguyên thứ tự của các hàng. vv
tôi đã cố gắng,
loại largefile.csv | uniq -d
để nhận các bản sao, Nhưng tôi không nhận được câu trả lời mong đợi.
Lý tưởng nhất là tôi muốn tập lệnh bash hoặc lệnh, nhưng nếu có bất kỳ đề xuất nào khác, điều đó cũng tuyệt vời.
Cảm ơn
Xem: Remove duplicate rows from a large file in Python qua trên Stack Overflow
tại sao 'uniq -d' không cho bạn câu trả lời mong đợi? – dogbane
Bạn nên hiển thị một số dữ liệu mẫu (đã được vệ sinh nếu cần), bao gồm cả những gì bạn cho là trùng lặp và không trùng lặp. Cụ thể, nếu trường đầu tiên (mụC#) khác nhau, nhưng trường thứ hai (UPC) là giống nhau hoặc nếu toàn bộ bản ghi là giống nhau, v.v. Bạn cũng nên cụ thể hơn về những gì "Tôi không nhận được câu trả lời mong đợi " có nghĩa. 'uniq' chỉ xem xét toàn bộ dòng trừ khi bạn yêu cầu nó bỏ qua một phần của dòng (nhưng nó không sử dụng dấu phẩy làm dấu tách trường). Ngoài ra, các tệp CSV có thể khó giải quyết trừ khi bạn đang sử dụng các công cụ được thực hiện cho mục đích (ví dụ: một thư viện Python). –