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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.