Why can't I match the string
"1234567-1234567890"
with the given regular expression
\d{7}-\d{10}
with egrep from the shell like this:
egrep \d{7}-\d{10} file
?
Why can't I match the string
"1234567-1234567890"
with the given regular expression
\d{7}-\d{10}
with egrep from the shell like this:
egrep \d{7}-\d{10} file
?
 
    
     
    
    egrep doesn't recognize \d shorthand for digit character class, so you need to use e.g. [0-9].
Moreover, while it's not absolutely necessary in this case, it's good habit to quote the regex to prevent misinterpretation by the shell. Thus, something like this should work:
egrep '[0-9]{7}-[0-9]{10}' file
grep, ed, sed, egrep, awk, emacs
grep vs egrep vs other regex flavors 
    
    For completeness:
Egrep does in fact have support for character classes. The classes are:
Example (note the double brackets):
egrep '[[:digit:]]{7}-[[:digit:]]{10}' file
 
    
    you can use \d if you pass grep the "perl regex" option, ex:
grep -P "\d{9}"
 
    
    Use [0-9] instead of \d. egrep doesn't know \d.
 
    
    try this one:
egrep '(\d{7}-\d{10})' file
