Я намерен добавить некоторые дополнительные пояснения относительно попыток OP и других ответов.
Вы также можете использовать решение Джона Кугельмана следующим образом:
grep -x "ABB\.log" a.tmp
заключение строки в кавычки и экранирование точки ( .) делает -Fфлаг больше не нужен .
Вам нужно экранировать .(точку) (потому что он соответствует любому символу (не только .), если он не экранирован) или использовать -Fфлаг с grep. -Fflag делает его фиксированной строкой (не регулярным выражением).
Если вы не заключаете строку в кавычки, вам может потребоваться двойная обратная косая черта, чтобы избежать точки ( .):
grep -x ABB\\.log a.tmp
Тест:
$ echo "ABBElog"|grep -x ABB.log
ABBElog #matched !!!
$ echo "ABBElog"|grep -x "ABB\.log"
#returns empty string, no match
Примечание:
-x заставляет соответствовать всей строке.
- Ответы с использованием неэкранированного
.без -Fфлага неверны.
- Вы можете избежать
-xswitch, заключив строку шаблона в символы ^и $. В этом случае убедитесь, что вы не используете -F, а избегаете ., потому что -Fэто предотвратит интерпретацию регулярного выражения ^и $.
РЕДАКТИРОВАТЬ:
(Добавление дополнительных пояснений в отношении @hakre):
Если вы хотите сопоставить строку, начинающуюся с -, вам следует использовать --с grep. Все, что --будет дальше, будет принято как ввод (не вариант).
Пример:
echo -f |grep -- "-f" # where grep "-f" will show error
echo -f |grep -F -- "-f" # whre grep -F "-f" will show error
grep "pat" -- "-file" # grep "pat" "-file" won't work. -file is the filename