2010-06-29 33 views
14

Sto lavorando su qualche vecchio codice e ho scoperto che ho usato per usareQual'è la differenza tra -E sed e sed -e

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

ma ora provate

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

Sembra fare la stessa cosa, o lo fa? Ricordo che c'era una ragione per cui l'ho fatto, ma non riesco a ricordare e fare "uomo sed" non aiuta perché non hanno nulla a proposito di -E solo -e che non ha molto senso etere.

-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. 

ho pensato -e significava che sarebbe partita con una regex ...

GNU sed version 4.2.1 

risposta

28

dal codice sorgente, -E è un'opzione non documentata per la compatibilità con BSD sed.

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

E da manual, -E in BSD sed viene utilizzato per supportare le espressioni regolari estese.