2010-06-29 11 views
14

ich auf einigem alten Code gerade arbeitete, und ich fand, dass ichWas ist der Unterschied zwischen sed -E und sed -en

sed -E 's/findText/replaceWith/g' #findText would contain a regex 

verwenden verwendet, aber ich versuche jetzt

sed -e 's/findText/replaceWith/g' 

Es scheint, das Gleiche zu tun, oder? Ich erinnere mich irgendwie daran, dass es einen Grund gibt, warum ich es gemacht habe, aber ich kann mich nicht erinnern und tun "Mann sed" hilft nicht, da sie nichts über -E nur -e haben, was nicht viel Sinn Äther macht.

-e, --expression=script 
    Append the editing commands in script to the end of 
    the editing command script. script may contain more 
    than one newline separated command. 

Ich dachte, -e bedeuten, dass es mit einem regulären Ausdruck passen würde ...

GNU sed version 4.2.1 

Antwort

28

aus dem Quellcode, -E ist eine nicht dokumentierte Option für die Kompatibilität mit BSD sed.

/* Undocumented, for compatibility with BSD sed. */ 
case 'E': 
case 'r': 
    if (extended_regexp_flags) 
    usage(4); 
    extended_regexp_flags = REG_EXTENDED; 
    break; 

Und von manual wird -E in BSD sed verwendet erweiterte reguläre Ausdrücke zu unterstützen.