2010-06-29 5 views
14

Je travaille sur un vieux code et je trouve que je l'habitude d'utiliserQuelle est la différence entre sed -e et sed -e

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

mais j'essaie maintenant

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

Il semble faire la même chose, ou le fait? Je me souviens d'une raison pour laquelle je l'ai fait mais je ne me souviens pas et faire "man sed" n'aide pas car ils n'ont rien à propos de -E seulement -e cela ne fait pas beaucoup de sens éther.

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

Je pensais que ce serait -e signifiait correspondre avec un motif ...

GNU sed version 4.2.1 

Répondre

28

à partir du code source -E est une option non documentée pour la compatibilité avec BSD sed.

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

Et de manual, -E dans sed BSD est utilisé pour soutenir des expressions régulières étendues.