I have a file named example
$ cat example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
and when I use grep
to get the line that has a space before .pdf
, I can't seem to get it.
grep *.pdf example
returns nothing, (I want to say, "grep, match zero or more spaces before .pdf
", but no result)
and if I use:
grep i*.pdf example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
all lines return, because I'm saying "grep, match me i
one or zero times, ok."
and lastly:
grep " *.pdf" example
no result returns
For this sample, I want to see
grep .pdf
as output
What is wrong with my thought?
Best Answer
Make sure you quote your expression.
Or if there might be multiple spaces (we can't use
*
as this will match the cases where there are no preceding spaces)+
means "one or more of the preceding character". In BRE you need to escape it with\
to get this special function, but you can use ERE instead to avoid thisYou can also use
\s
ingrep
to mean a spaceWe should escape literal
.
because in regex.
means any character, unless it's in a character class.