我的目标是匹配命令行参数前缀,如下所示:
--abc=
以下两种模式(以及许多其他模式)允许:
--abc==
不知何故,我无法找到一个grep方式来确保只有一个等号。
grep -i '^--[a-z]\{2,\}=\{1,1\}'
grep -i '^--[a-z]\{2,\}='
grep 2.20
CentOS Linux 7.3.1611
答案 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='