壳牌正则表达式



<强> 代表单个字符(必须存在)

. .b

可以表示acdb

aaab, abbbb

但不可以表示acb, ab, aba等

<强>

要和通配符区分开,匹配*一个字符的0个或多个

a * b

可以表示ab,艺术展,b, abababab

但不可以表示acb,英航等

acb只会匹配到b,也就是视为b前面有0个

英航也只会匹配到b,同样视为b前面有0个

匹配^字符串开头

输入:echo - e abcd \ accc | grep“^ ab”

输出:cd

匹配字美元符串结尾

输入:echo - e abcd \ accc | grep美元“抄送”

输出:ac

匹配任意个字符(0到多个)

。* b

和通配符里面的*大致类似

可以代表ab, acb,一……b

但不能代表b……一个

表示范围,可以用来进行模糊匹配

常用选项为【所有】【0 - 9】

grep【0 - 9】文本过滤出含数字的行

grep【所有】文本过滤出含小写字母的行

<强> grep【abc】文本过滤出含有a, b, c的行()

{n, m}表示匹配前面字符的至少n个最多m个字符,注意:

<强> 强输入回声abbcdfbjk | grep - e b {1,2}”

输出acdfjk

如果输入回声abbcdfbjk | grep - e b {2,}”

cdfbjk可以看到只有连在一起的两个bb被匹配到,也就是说明了

强输入grep - e“b ac{2、5}”匹配a和b之间至少两个最多5个c的行,但是

【^一个】表示匹配一个以外的所有字符

输入echo - e abc \ def \ lmn | grep”[^ f-z]”

输出

匹配^[^]中的以一个为开头以外的所有行grep”^ ^ #”/etc/passwd匹配/etc/passwd里面不以#开头的所有行<强> \ & lt;;\祝辞

锚定单词首部(尾部)

表示在匹配在首部(尾部)以空格或特殊字符为分隔的指定字符。如果同时锚定首尾\ & lt;\祝辞则表示这个字符的准确匹配,它的前后为特殊字符或空格分隔,不会和任何字符直接连接

输入:回声“嗨,rootamroot”| grep \ & lt;根“
输出:嗨,amroot

输入:回声”hiroot iamroot”| grep“根\祝辞”
输出:hiiamroot

输入:回声“嗨,根iamroot”| grep“根\ \ & lt;比;”
输出:嗨,<强> iamroot

\ 1调用前面的参数——第一个分组(也就是括号里的参数)

过滤出一行中有两个相同数字的行

# grep“\ ([0 - 9] \)。* \ 1 "/etc/passwd

过滤出行首和行位字母相同的行

# grep”^ \ [a - z] \)。* \ 1 $ "/etc/passwd




壳牌正则表达式