Xem các tùy chọn -F
(chuỗi cố định, trái ngược với biểu thức chính quy) và -x
(chính xác: khớp với toàn bộ dòng).
grep -Fx user1@example.com text_file
sẽ tương đương với:
grep '^user1@example\.com$' text_file
(hãy nhớ rằng đó .
là một toán tử biểu thức chính quy phù hợp với bất kỳ ký tự nào).
Sử dụng -q
tùy chọn nếu bạn chỉ muốn kiểm tra nếu có một dòng như vậy:
grep -Fxq user1@example.com text_file &&
echo yes, that address is in that file.
Nếu dòng để tìm kiếm và tên tệp là biến:
grep -Fxqe "$email" < "$file"
Hoặc là
grep -Fxq -- "$email" < "$file"
Bạn không muốn:
grep -Fxq "$email" "$file"
vì điều đó sẽ gây ra vấn đề nếu $email
hoặc $file
bắt đầu với -
.
Nếu tệp được sắp xếp (tốt nhất là tại địa phương hiện tại của bạn C
), bạn có thể tăng tốc mọi thứ bằng cách sử dụng comm
thay vì grep
:
printf '%s\n' user1@example.com | comm -12 - text_file
Lợi thế sẽ trở nên rõ ràng hơn khi bạn có một vài địa chỉ email cần kiểm tra (ví dụ trong một tệp được sắp xếp khác):
comm -12 text_file emails_to_check
sẽ nhanh hơn:
grep -Fxf emails_to_check text_file