В чем разница между sed -E и sed -e - PullRequest
18 голосов
/ 29 июня 2010

Я работаю над старым кодом и обнаружил, что раньше использовал

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

но я сейчас попробую

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

Кажется, делает то же самое, или нет? Я вроде помню, что была причина, по которой я это сделал, но я не могу вспомнить, и «man sed» не помогает, потому что у них нет ничего о -Е только -е, что не имеет большого смысла в эфире. *

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

Я думал, что это означает, что оно будет соответствовать регулярному выражению ...

GNU sed version 4.2.1

1 Ответ

31 голосов
/ 29 июня 2010

Исходный код -E - недокументированный вариант для совместимости с BSD sed.

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

А из manual , -E в BSD sed используется для поддержки расширенных регулярных выражений.

...