Siehe die Optionen -F(feste Zeichenfolge im Gegensatz zum regulären Ausdruck) und -x(genau: Übereinstimmung mit der gesamten Zeile).
grep -Fx user1@example.com text_file
wäre das Äquivalent von:
grep '^user1@example\.com$' text_file
(Denken Sie daran, dass dies .ein Operator für reguläre Ausdrücke ist, der mit einem beliebigen Zeichen übereinstimmt.)
Verwenden Sie die -qOption, wenn Sie nur prüfen möchten, ob es eine solche Zeile gibt:
grep -Fxq user1@example.com text_file &&
echo yes, that address is in that file.
Wenn die zu durchsuchende Zeile und der Dateiname variabel sind:
grep -Fxqe "$email" < "$file"
Oder
grep -Fxq -- "$email" < "$file"
Du willst nicht:
grep -Fxq "$email" "$file"
da dies probleme verursachen würde wenn $emailoder $filemit -.
Wenn die Datei sortiert ist (vorzugsweise in Ihrem aktuellen Gebietsschema C), können Sie möglicherweise die Geschwindigkeit erhöhen, indem Sie commanstelle von grep:
printf '%s\n' user1@example.com | comm -12 - text_file
Der Vorteil wird deutlicher, wenn Sie mehrere E-Mail-Adressen prüfen müssen (zum Beispiel in einer anderen sortierten Datei):
comm -12 text_file emails_to_check
wäre schneller als:
grep -Fxf emails_to_check text_file