Регулярное выражение не соответствует

Регулярное выражение не соответствует

почему это не совпадает..?

sed -e '/--Updated?[[:space:]]+Date/d' inputfile

этот..:

--Updated Date: 2013-11-06 15:32:13

d?потому что иногда у меня есть Update Date, а иногда Updated Date.

для удаления? Я тоже пробовал \s, не работает.

решение1

вам нужно использовать -rпараметр. попробуйте использовать

sed -r '/--Updated?[[:space:]]+Date/d' inputfile

обновление ответа

При использовании sed '/something/d'все строки, соответствующие этому выражению, будут удалены.

-r - параметр -r - использовать расширенные регулярные выражения.

Внутри выражения есть 2 регулярных выражения.

[[:space:]]- Соответствует всем пробельным символам, включая переносы строк

? - optional

+- один или несколько раз.

Итак, команда sed удалит все строки, которые соответствуют --updated и одному или нескольким пробельным символам, а также дате, но из-за ? символ d является необязательным. Например:

--Updated Date: 2013-11-06 15:32:13
--Updated   Date: 2013-11-06 15:32:13
--Updated           Date: 2013-11-06 15:32:13
--Update Date: 2013-11-06 15:32:13

решение2

Чтобы сделать это с помощью базового регулярного выражения POSIX, самое близкое, что я могу сделать, это:

sed '/--Updated*[[:space:]][[:space:]]*Date/d' inputfile

К сожалению, нет реальной замены для ?, поэтому *используется a , который также будет соответствовать нескольким ds. +Однако можно заменить, просто повторив шаблон an , используя a *для второго повторения.

Обновлять

На самом деле, чтобы получить эквивалентный эффект расширенных выражений, можно использовать два шаблона:

sed \'
  /--Updated[[:space:]][[:space:]]*Date/d
  /--Update[[:space:]][[:space:]]*Date/d
  ' inputfile

решение3

С помощью gnu sed 4.2.2 на cygwin добавьте флаг -r:

 '--Updated Date: 2013-11-06 15:32:13'|sed -r -e '/--Updated?[[:space:]]+Date/d'

не выводит никаких данных. -rвключает расширенные регулярные выражения, поэтому ?и +будет работать так, как вы ожидаете.ссылка на расширенные регулярные выраженияЯ использую большинство пунктов, которые ?и +должны иметь начальную обратную косую черту в основных регулярных выражениях (по умолчанию), чтобы иметь их особое значение.

Связанный контент