Как включить пробел с помощью grep?

У меня есть файл с именем example

$ cat examplekali.pdflinux.pdfubuntu.pdfexample.pdf.this.pdfgrep .pdf

и когда я использую grep чтобы получить строку, перед которой стоит пробел .pdf, Кажется, я не могу этого понять.

grep *.pdf example

ничего не возвращает (я хочу сказать: "grep, сопоставьте ноль или более пробелов перед .pdf", но безрезультатно)

и если я использую:

grep i*.pdf examplekali.pdflinux.pdfubuntu.pdfexample.pdf.this.pdfgrep .pdf

все строки возвращаются, потому что я говорю: "grep, сопоставь меня i один или ноль раз, хорошо."

и, наконец,:

grep " *.pdf" example

результат не возвращается

Для этого примера я хочу увидеть

grep .pdf 

в качестве выходных данных

Что не так с моей мыслью?

Убедитесь, что вы процитировали свое выражение.

$ grep ' \.pdf' examplegrep .pdf

Или если может быть несколько пробелов (мы не можем использовать * поскольку это будет соответствовать случаям, когда нет предшествующих пробелов)

grep ' \+\.pdf' example

+ означает "один или несколько предыдущих символов". В BRE вам нужно избежать этого с помощью \ чтобы получить эту специальную функцию, но вы можете использовать ERE вместо этого, чтобы избежать этого

grep -E ' +\.pdf' example 

Вы также можете использовать \s в grep для обозначения пространства

grep '\s\+\.pdf' example

Мы должны избегать буквального . потому что в регулярном выражении . означает любой символ, если только он не находится в классе символов.