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?
+4
A:
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.
Dave Webb
2008-09-02 08:14:22