( Zahy | 2012. 03. 07., sze – 07:32 )

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 :-)