Làm thế nào để grep với một danh sách các từ


81

Tôi có một tệp A với 100 từ được phân tách bằng các dòng mới. Tôi muốn tìm kiếm tệp B để xem có BẤT KỲ từ nào trong tệp A xuất hiện trong đó không.

Tôi đã thử những cách sau nhưng không hiệu quả với tôi:

grep -F A B

Câu trả lời:


112

Bạn cần sử dụng tùy chọn -f:

$ grep -f A B

Tùy chọn -Fthực hiện tìm kiếm chuỗi cố định trong trường -fhợp chỉ định tệp mẫu. Bạn có thể muốn cả hai nếu tệp chỉ chứa các chuỗi cố định và không chứa regexps.

$ grep -Ff A B

Bạn cũng có thể muốn -wtùy chọn chỉ đối sánh toàn bộ các từ:

$ grep -wFf A B

Đọc man grepđể biết mô tả về tất cả các đối số có thể có và những gì chúng làm.


4
-F chỉ là một tối ưu hóa nếu bạn không muốn sử dụng regexps?
— phượng hoàng

Còn việc tìm tất cả các lần xuất hiện của các từ trong tệp A trong cây thư mục B , chỉ liệt kê tên tệp của tất cả các từ trùng khớp trong B thì sao?
— zealoushacker

2

Để tìm một danh sách rất dài các từ trong các tệp lớn, có thể sử dụng egrep:

remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B
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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.