Formálisan igazad van. A _sed_ esetében a \( \) \{ \}... metakarakterek, a regexpnél meg a ( ) { } [ ] ? . stb.
De a tiszta-száraz érzés nekem az alábbi 3. példa, amikor a \(, meg a \. pont azt fejezi ki, hogy a következő karaktert értelmezés nélkül kérném, a (), {}, [] . magában is a regexp értelmes, jelentéssel bíró részét képező metakarakter, netán átemelhető a kifejezés másik értelmezőbe módosítás nélkül.
Ezért nekem a "\(" az 1. példában "védelem", (mert egy másik értelmező a "("-t is megértené. A "." maga metakarakter, ezért védeni kell középen - olyan zagyva, na.
A 3. példában meg kitisztul minden. A "(" metakarakter lesz, ha meg a karaktere kell, megvédem. Itt a gép érti az igényem, míg fentebb nekem kell a sed _sajátos_ dialektusát érteni.
Azaz - ha lehet - a sed tanuljon meg regexp-ül, ne én sed-ül.
#1
echo 'alma (belma . celma) delma' | sed -e 's/.*\((.*\..*)\).*/\1/'
(belma . celma)
echo 'alma (belma . celma) delma' | sed -re 's/.*\((.*\..*)\).*/\1/'
belma . celma
#3
echo 'alma (belma . celma) delma' | sed -re 's/.*(\(.*\..*\)).*/\1/'
(belma . celma)
--
bocs, ha offtopic
bocs, mert szubjektív