Bkz -F
(sabit dize kadar normal ifadeye karşı) ve -x
(: bütün çizgi maç tam) seçenekleri.
grep -Fx user1@example.com text_file
şuna eşdeğer olacaktır:
grep '^user1@example\.com$' text_file
(bunun .
herhangi bir karakterle eşleşen normal bir ifade operatörü olduğunu unutmayın ).
-q
Yalnızca böyle bir çizgi olup olmadığını kontrol etmek istiyorsanız seçeneği kullanın :
grep -Fxq user1@example.com text_file &&
echo yes, that address is in that file.
Aranacak satır ve dosya adı değişkense:
grep -Fxqe "$email" < "$file"
Veya
grep -Fxq -- "$email" < "$file"
İstemezsiniz:
grep -Fxq "$email" "$file"
eğer sorunlara sebep olacağından $email
ya $file
ile başladı -
.
Dosyası (tercihen, geçerli yerel ayarda sıralanır varsa C
) yapabilirsiniz kullanarak muhtemelen hız şeyler kadar comm
yerine grep
:
printf '%s\n' user1@example.com | comm -12 - text_file
Kontrol edilecek birkaç e-posta adresiniz olduğunda (örneğin başka bir sıralı dosyada) avantaj daha belirgin hale gelecektir:
comm -12 text_file emails_to_check
daha hızlı olurdu:
grep -Fxf emails_to_check text_file