Ich hatte mir gedacht, daß man das muß, weil *sonst* auf der Seite von grep das ganze nicht heile ankommt. Ich dachte, daß die bash das als String ansehen und an grep übergeben *muß*, damit grep den komplett übergeben bekommt und dann seinerseits merkt, daß es ein regulärer Ausdruck mit Wortgrenzen ist.
vollkommen richtig, ich meinte ja auch das bash-internal:
wo sich die quoting regeln in den letzten versionen recht drastisch geändert haben:
von: man muss (die regex) quoten, über: man darf (die regex) quoten, bis: wenn man (die regex) quotet, geht die welt unter..
innerhalb dieses konstrukts gelten spezielle quoting regeln, sodass die regex auch ohne quoting vom globbing "beschützt" ist. quotet man die regex, so versucht die bash einfaches string matching. wobei man das mit regexes auch kann, von daher zerrinnt mir da ein wenig der sinn zwischen den fingern...
wenn man ein externes regex tool verwendet (sed, awk, grep, perl...)
muss man die argumente, so sie denn regexes sind, in der tat quoten, um die bash vom interpretieren der metazeichen (asterisk, fragezeichen..) zu hindern. (es sei denn, man steht auf überraschungen.)
und was die frage des threaderstellers angeht: kommt halt drauf an, was er genau machen will, ob das mit (e)grep -o geht. wenn das beispiel von ihm oben alles ist, was er machen will, dann ja: das geht. geklammerte "teilausdrücke" aus dem gesamten gematchten string könnte man vielleicht über mehrere (e)grep -o pipes emulieren oder so, aber da dann auch nur eine klammer auf einmal. alles schon ein ziemlicher workaround, wenn man bedenkt, dass sed das zb "out of the box" kann.