У меня есть файл, названный примером
$ cat example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
и когда я использую grep
получить строку, которая имеет пространство прежде .pdf
, Я, может казаться, не получаю его.
grep *.pdf example
возвраты ничто, (я хочу сказать, "grep, нуль соответствия или больше пробелов прежде .pdf
", но никакой результат)
и если я использую:
grep i*.pdf example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
весь возврат строк, потому что я говорю "grep, соответствует мне i
времена единицы или нули, хорошо."
и наконец:
grep " *.pdf" example
никакие возвраты результата
Для этого образца я хочу видеть
grep .pdf
как произведено
Что не так с моей мыслью?
Удостоверьтесь, что Вы заключаете свое выражение в кавычки. Я думаю, что оболочка wordsplitting является одной из Ваших проблем здесь, но необходимо всегда заключать regex в кавычки, поскольку все виды вещей пойдут не так, как надо иначе.
$ grep ' \.pdf' example
grep .pdf
Или если могло бы быть несколько пробелов (мы не можем использовать *
поскольку это будет соответствовать случаям, где нет никаких предыдущих пробелов),
grep ' \+\.pdf' example
+
означает "один или несколько из предшествующего символа". В BRE необходимо выйти из него с \
для получения этой специальной функции но можно использовать ДО вместо этого для предотвращения этого
grep -E ' +\.pdf' example
Можно также использовать \s
в grep
означать пространство
grep '\s\+\.pdf' example
Мы должны выйти из литерала .
потому что в regex .
средства любой символ, если это не находится в классе символов.