Cho 2 tệp được sắp xếp - xóa tất cả các từ được tìm thấy trong một tệp khác


0

Trên Linux tôi có hai tệp văn bản với các từ UTF8 tiếng Nga được sắp xếp với sort -u(thực ra tôi đã sử dụng :%sort utrong Vim, nó tạo ra kết quả tương tự).

Một trong những tập tin dict.txtchứa khoảng 700000 từ trong từ điển tùy chỉnh của tôi. Một tập tin khác bad-words.txtchứa các từ thường bị nhầm.

Tôi muốn xóa tất cả các từ được tìm thấy bad-words.txttừ dict.txt.

Tôi biết rằng một tập lệnh perl sử dụng hàm băm có thể làm điều đó, nhưng tôi đang theo một lớp lót Unix.

Có một lệnh Unix (có thể là cái gì đó sử dụng diff?) Để thực hiện nhiệm vụ này? Và tôi hy vọng diffsẽ không bị nhầm lẫn bởi số lượng lớn các dòng - bởi vì chương trình "Vượt ra ngoài so sánh" trên Windows là ...

Câu trả lời:


3

comm sẽ làm điều này.

comm -3 dict badwords

hoặc để sắp xếp trên bay:

comm -3 <(sort dict-input) <(badwords)


Thật không may, nó phàn nàn comm: file 1 is not in sorted order(mặc dù tôi đã chế tạo nó) và tạo ra kết quả 2 cột kỳ lạ ...
Alexander Farber

2
commhy vọng tệp sẽ được sắp xếp theo thứ tự ASCIIbory, ví dụ LANG=C sort.
grawity

@grawity: Lời khuyên đó đã cứu tôi trong ngày :) Cảm ơn!
Sebastian askawiec
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.