Як включити пробіл із символом grep?


17

У мене є файл з назвою example

$ 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

всі рядки повертаються, тому що я кажу "греп, відповідь мені iодин чи нуль разів, добре".

і останнє:

grep " *.pdf" example

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

Цей зразок я хочу побачити

grep .pdf 

як вихід

Що не так з моєю думкою?

Відповіді:


31

Переконайтесь, що ви цитуєте своє вираження. Я думаю, що шліфування слів оболонки - одна з ваших проблем тут, але ви завжди повинні цитувати свій регулярний вираз, оскільки всі речі йтимуть не так.

$ grep ' \.pdf' example
grep .pdf

Або якщо може бути декілька пробілів (ми не можемо використовувати, *оскільки це буде відповідати випадкам, коли немає попередніх пробілів)

grep ' \+\.pdf' example

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

grep -E ' +\.pdf' example 

Ви також можете використовувати \sв grepзначенні пробілу

grep '\s\+\.pdf' example

Нам слід уникати буквального, .тому що в регулярному виразі .означає будь-який символ, якщо тільки він не знаходиться в класі символів.


Ви були першими, хто помітив, що в останньому рядку є пробіл.
Пілот6

@ Pilot6 спасибі Питання було дещо заплутано написане :)
Zanna

Для першого, хто зрозумів питання, має бути значок бейджика ;-)
Пілот6

@Zanna, чи є щось не так у будь-який час у цій справі? egrep завжди отримує вам перевагу ...
solfish

@solfish egrep- це (з точки зору стилю regex, afaik) те саме, що grep -E, і я вважаю, ми маємо на увазі використовувати останнє - egrepтощо нібито застаріли на користь grepпрапорів Росії
Zanna
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.