Lihat opsi -F
(string tetap, yang bertentangan dengan ekspresi reguler) dan -x
(tepat: cocokkan dengan seluruh baris).
grep -Fx user1@example.com text_file
akan sama dengan:
grep '^user1@example\.com$' text_file
(ingat itu .
adalah operator ekspresi reguler yang cocok dengan karakter apa pun).
Gunakan -q
opsi jika Anda hanya ingin memeriksa apakah ada garis seperti itu:
grep -Fxq user1@example.com text_file &&
echo yes, that address is in that file.
Jika baris yang dicari dan nama file variabel:
grep -Fxqe "$email" < "$file"
Atau
grep -Fxq -- "$email" < "$file"
Anda tidak mau:
grep -Fxq "$email" "$file"
karena itu akan menimbulkan masalah jika $email
atau $file
dimulai dengan -
.
Jika file diurutkan (di tempat Anda saat ini, lebih disukai C
), Anda mungkin dapat mempercepat dengan menggunakan comm
alih-alih grep
:
printf '%s\n' user1@example.com | comm -12 - text_file
Keuntungan akan menjadi lebih jelas ketika Anda memiliki beberapa alamat email untuk diperiksa (misalnya dalam file yang diurutkan lainnya):
comm -12 text_file emails_to_check
akan lebih cepat dari:
grep -Fxf emails_to_check text_file