Unix syntax for the grep command for only an ending character -
for file james
, when run command:
cat james | grep ["."]
i lines contain dot.
how lines end dot?
to find lines end .
character:
grep '\.$' james
your cat
command unnecessary; grep
able read file itself, , doesn't need cat
job it.
a .
character special in regular expressions, matching 1 character; need escape \
match literal .
character.
and need enclose whole regular expression in single quotes because \
, $
characters special shell. in regular expression, $
matches end of line. (you're dealing characters treated specially shell, , others treated specially grep
; single quotes shell out of way can control grep
sees.)
as square brackets used in question, that's way escape .
, it's unusual. in regular expression, [abc]
matches single character that's of a
, b
, or c
. [.]
matches single literal .
character, since .
loses special meaning inside square brackets. double quotes used: ["."]
unnecessary, since .
isn't shell metacharacter -- square brackets are special shell, similar meaning meaning in regular expression. your
grep ["."]
is equivalent to
grep [.]
the shell expand [.]
list of every visible file name contains single character .
. there's such file, namely current directory .
-- shell's []
expansion ignores files names start .
. since there's nothing expand [.]
to, it's left alone, , grep
sees [.]
argument, just happens work, matching lines contain literal .
character. (using different shell, or same shell different settings, mess up.)
note shell doesn't (except in limited contexts) deal regular expressions; rather uses file matching patterns, less powerful.
Comments
Post a Comment