我知道这是基本的,但我不确定,我哪里出错了,从来没有写过正则表达式..
我需要从命令
中获取一些输出cmd | grep '[0-9]+:[0-9]+:[0-9]+:[0-9]+'
我需要格式化一些格式的信息
dummy dummy 4:9:93:022 dummy
我该怎么做?请让我知道我哪里出错......
输出格式为
`-+- policy='round-robin 0' prio=2 status=active
|- 6:0:0:136 sdip 135:144 active ready running
`- 5:0:0:136 sdle 67:448 active ready running
我只需要根据6:0:0:136 ....
删除它答案 0 :(得分:3)
加号修饰符是“扩展正则表达式”语法的一部分。这样:
a+
表示“一个或多个'a'字符”,是此基本表达式的简写:
aa*
传统上grep
支持基本正则表达式,egrep
支持扩展语法。所以这样做:
cmd | egrep '[0-9]+:[0-9]+:[0-9]+:[0-9]+'
或者这(这是同一件事):
cmd | grep -E '[0-9]+:[0-9]+:[0-9]+:[0-9]+'
答案 1 :(得分:3)
您需要使用反斜杠转义每个+
,或使用扩展的正则表达式选项(-E
或--extended-regexp
):
cmd | grep '[0-9]\+:[0-9]\+:[0-9]\+:[0-9]\+'
或:
cmd | grep -E '[0-9]+:[0-9]+:[0-9]+:[0-9]+'
基本与扩展正则表达式
在基本正则表达式中,元字符?
,+
,{
,|
,(
和)
失去了它们的特殊含义;而是使用反斜杠版本\?
,\+
,\{
,\|
,\(
和\)
。
答案 2 :(得分:1)
这应该有效
cmd | grep -E '([0-9]+:){3}[0-9]+'