Zamierzam dodać dodatkowe wyjaśnienia dotyczące prób OP i innych odpowiedzi.
Możesz również użyć rozwiązania Johna Kugelmana w następujący sposób:
grep -x "ABB\.log" a.tmp
cytowanie łańcucha i unikanie znaku kropki ( .) sprawia, że -Fflaga nie jest już potrzebna .
Musisz uciec od .(kropki) (ponieważ pasuje do dowolnego znaku (nie tylko .), jeśli nie jest zmieniony) lub użyć -Fflagi z grep. -Fflaga sprawia, że jest to stały ciąg (nie wyrażenie regularne).
Jeśli nie podasz cudzysłowu, możesz potrzebować podwójnego odwrotnego ukośnika, aby uniknąć kropki ( .):
grep -x ABB\\.log a.tmp
Test:
$ echo "ABBElog"|grep -x ABB.log
ABBElog #matched !!!
$ echo "ABBElog"|grep -x "ABB\.log"
#returns empty string, no match
Uwaga:
-x siły, aby dopasować całą linię.
- Odpowiedzi używające bez zmiany znaczenia
.bez -Fflagi są błędne.
- Możesz uniknąć
-xzmiany, owijając ciąg wzorca za pomocą ^i $. W takim przypadku upewnij się, że nie używasz -F, zamiast tego ucieknij przed ., ponieważ -Funiemożliwi to interpretację wyrażeń regularnych ^i $.
EDYCJA:
(Dodanie dodatkowego wyjaśnienia w odniesieniu do @hakre):
Jeśli chcesz dopasować ciąg zaczynający się od -, powinieneś użyć --z grep. Cokolwiek nastąpi, --zostanie przyjęte jako dane wejściowe (nie opcja).
Przykład:
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