参照してください-F
(正規表現とは対照的に、固定文字列を、)および-x
オプション:(行全体が一致し、正確な)。
grep -Fx user1@example.com text_file
以下と同等です:
grep '^user1@example\.com$' text_file
(.
任意の文字に一致する正規表現演算子であることを忘れないでください)。
-q
このような行があるかどうかだけを確認したい場合は、このオプションを使用します。
grep -Fxq user1@example.com text_file &&
echo yes, that address is in that file.
検索する行とファイル名が可変の場合:
grep -Fxqe "$email" < "$file"
または
grep -Fxq -- "$email" < "$file"
あなたは望まない:
grep -Fxq "$email" "$file"
$email
またはで$file
開始した場合に問題が発生するため-
。
ファイルが(現在のロケールで、できればC
)ソートされている場合は、次のcomm
代わりにを使用することで、速度を上げることができますgrep
。
printf '%s\n' user1@example.com | comm -12 - text_file
チェックする電子メールアドレスが複数ある場合(たとえば、別のソート済みファイルにある場合)、利点はより明白になります。
comm -12 text_file emails_to_check
よりも高速になります:
grep -Fxf emails_to_check text_file