2017-01-26 2 views
1

Моя цель состоит в том, чтобы соответствовать аргумент командной строки префикс, который выглядит как:Grep вплоть до знака равенства для параметра CLI

--abc= 

Оба приведенных ниже моделей (и многие другие), позволяют:

--abc== 

Как-то я не могу найти способ grep для обеспечения наличия только одного знака равенства.

grep -i '^--[a-z]\{2,\}=\{1,1\}' 
grep -i '^--[a-z]\{2,\}=' 


Grep 2,20
CentOS Linux 7.3.1611

+0

Вопрос не совсем ясен. Просьба привести несколько примеров. – manishr

ответ

2

ERE:

^--[[:alpha:]]{2,}=[^=]+$ 
  • ^--[[:alpha:]]{2,}= матчи --, затем два или более буквенные символы в вашем locale, то литерал =

  • [^=]+$ соответствует один или несколько символов, которые не являются = в конце


BRE:

^--[[:alpha:]]\{2,\}=[^=]\+$ 

Пример:

$ grep -E '^--[[:alpha:]]{2,}=[^=]*$' <<<'--foobar=spam' 
--foobar=spam 

$ grep -E '^--[[:alpha:]]{2,}=[^=]*$' <<<'--foobar=23' 
--foobar=23 

$ grep -E '^--[[:alpha:]]{2,}=[^=]*$' <<<'--123ad=' 

$ grep -E '^--[[:alpha:]]{2,}=[^=]+$' <<<'--spamegg=' 
+0

tks! Стиль E намного чище и больше похож на Java/PHP regex, так что это мой новый стандарт :) Регулярное выражение grep std должно быть древним покорением из * nix 'ранних дней. – iletras

+1

@iletras BRE - это мобильность между всеми системами * nix. – heemayl

Смежные вопросы