grep,包括CLI参数的等号

时间:2017-01-26 03:25:15

标签: bash grep

我的目标是匹配命令行参数前缀,如下所示:

--abc=

以下两种模式(以及许多其他模式)允许:

--abc==

不知何故,我无法找到一个grep方式来确保只有一个等号。

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


grep 2.20
CentOS Linux 7.3.1611

1 个答案:

答案 0 :(得分: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='