如果我想找到包含小写字母和数字的内容,那么这很容易
生产文本 | grep -E '[0-9a-z]'
括号对于匹配一组字符很有用,但是那些有些特殊的字符呢?
如果我想,使用括号匹配任何特点但其中之一:右括号]
、破折号(或连字符)“-”、斜杠/
和\
、插入符号^
、冒号:
。
它看起来像这样吗(我知道这行不通)?
[^]-/\^:]
答案1
匹配一个文字]
和一个-
文字括号表达式你必须像这样使用它们:
[^]/\^:-]
或者,甚至更好,因为某些工具需要转义反斜杠:
[^]/\\^:-]
那是
如果右方括号 ( ']' ) 在列表中第一个出现(在初始 '^' 之后,如果有),则将失去其特殊含义并在方括号表达式中表示自己
和
如果连字符减号字符在列表中首先出现(在初始“^”之后,如果有)或最后出现,则应将其视为其本身
因此
如果括号表达式同时指定“-”和“]”,则在括号表达式中,“]”应放在第一位(在“^”之后,如果有),“-”放在最后。
括号表达式的规则与埃雷和布雷。
答案2
也许奇怪的是,你需要在特定的地方有几个角色。您必须是]
集合中的第一个字符,并且-
必须是集合中的最后一个字符。
这是满足您要求的 RE [^]\^/-]
::
echo 'Hello[world]-[sun] ^^ 4/5 or 3\4' | grep -Eo '[^]\^/-]' | xargs
H e l l o [ w o r l d [ s u n 4 5 o r 3 4