Ezen a "-r" opcion kicsit elcsodalkoztam, sose hallottam rola. man sed:
-r Same as -E for compatibility with GNU sed.
OK, akkor mi a -E, mert az se ismeros:
-E Interpret regular expressions as extended (modern) regular
expressions rather than basic regular expressions (BRE's). The
re_format(7) manual page fully describes both formats.
Tehat ugyanaz, mint a grep-nel - extended regexp. Vegul tovabbolvasva:
STANDARDS
The sed utility is expected to be a superset of the IEEE Std 1003.2
(“POSIX.2”) specification.
The -E, -I, -a and -i options, the prefixing “+” in the second member of
an address range, as well as the “I” flag to the address regular expres‐
sion and substitution command are non-standard FreeBSD extensions and may
not be available on other operating systems.
Azaz jol gondoltam, valami linuxizm - OK, jelen esetben GNU-izm. (Amit speciel atvettek FreeBSD-ek is, de attol meg nem standard.) Es kozben kicsit jobban megnezve azt a RE-t, az is latszik, hogy az adott esetben osszesen annyit nyertunk a nem standard opcioval, hogy (valami) format irtal a \(valami\) forma helyett (hogy meglegyen a backreference-hez szukseges "mentese" a megtalalt sztringnek). Ha megnezem, hogy osszesen 4 backreference van a kodban, ez 4*2 hanyattortvonal sporolasa, csereben kiirtad az opciot (es egy plusz szokozt), azaz 5 karaktert sporoltal - igaz egy hangyanyival olvashatobb a kod. Ennyit az inkompatibilitas szerintem nem er. (Termeszetesen amikor mar a vilag minden UNIX rendszere kihal, es csak Linux fog futni a gepeken GNU-s cuccokkal; amikor mar nem lesz elerheto az UWIN, csak a Cygwin; nem lesznek alternativ unixos utility-k, csak a GNU-s cuccok - vagy amikor megvaltozik az eppen uralkodo POSIX-szabvany, akkor mar ez lesz a kovetendo eljaras. Addig - talan - erre is erdemes figyelni.)
NOT GOOD. (But not too bad - de ezt a regexre mondom, mert vegul is az volt a feladat.)
(Megjegyzem, ha " (idezojel) helyett ' (azaz aposztrof) lenne a parancssorban, akkor raadasul nem kene meg azzal is foglalkozni, hogy mi az a karakter, amit a shell meg idezojelen belul is ertelmez - mint pl. maga a \ bizonyos kombinaciokban. De nem ekezlek tovabb, te legalabb kitalaltad a regexpet, en csak raneztem es azt mondtam magaman, "igen,valszeg backreference segitsegevel valoszinuleg meg lehet oldani" - es hagytam a fenebe.)
Szerk: most latom, mivel idezojelbe tetted a sima sorvegjel $ helyett \$-t kellett irnod. Aposztroffal a hanyattortvonal megsporolhato :-)