Saya bermaksud menambahkan beberapa penjelasan tambahan mengenai upaya OP dan jawaban lainnya juga.
Anda juga dapat menggunakan solusi John Kugelmans seperti ini:
grep -x "ABB\.log" a.tmp
mengutip string dan meng-escape titik ( .) membuatnya tidak lagi membutuhkan -Fflag.
Anda perlu meng-escape .(titik) (karena cocok dengan karakter apa pun (tidak hanya .) jika tidak di-escape) atau gunakan -Fflag dengan grep. -Fflag menjadikannya string tetap (bukan regex).
Jika Anda tidak mengutip string, Anda mungkin perlu garis miring terbalik ganda untuk mengosongkan titik ( .):
grep -x ABB\\.log a.tmp
Uji:
$ echo "ABBElog"|grep -x ABB.log
ABBElog #matched !!!
$ echo "ABBElog"|grep -x "ABB\.log"
#returns empty string, no match
catatan:
-x kekuatan untuk mencocokkan seluruh garis.
- Jawaban menggunakan non escaped
.tanpa -Fflag salah.
- Anda dapat menghindari
-xpengalihan dengan membungkus string pola Anda dengan ^dan $. Dalam hal ini, pastikan Anda tidak menggunakan -F, alih-alih escape ., karena -Fakan mencegah interpretasi regex dari ^dan $.
EDIT:
(Menambahkan penjelasan tambahan tentang @hakre):
Jika Anda ingin mencocokkan string yang dimulai dengan -, maka Anda harus menggunakan --grep. Apapun yang mengikuti --akan diambil sebagai masukan (bukan pilihan).
Contoh:
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