Question
Here's a basic regex technique that I've never managed to remember. Let's say I'm using a fairly generic regex implementation (e.g., grep or grep -E). If I were to do a list of files and match any that end in either .sty
or .cls
, how would I do that?
Solution
ls | grep -E "\.(sty|cls)$"
\.
matches literally a"."
- an unescaped.
matches any character(sty|cls)
- match"sty"
or"cls"
- the | is anor
and the brackets limit the expression.$
forces the match to be at the end of the line
Note, you want grep -E
or egrep
, not grep -e
as that's a different option for lists of patterns.
OTHER TIPS
egrep "\.sty$|\.cls$"
This regex:
\.(sty|cls)\z
will match any string ends with .sty or .cls
EDIT:
for grep \z should be replaced with $ i.e.
\.(sty|cls)$
as jelovirt suggested.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow