公司网站制作多少钱,大连开发区天气,机关网站建设的作用,建设部网站材料价格上涨规定1.1概念 在进行程序设计的过程中#xff0c;用户会不可避免地遇到处理某些文本的情况。有的时候#xff0c;用户还需要查找符合某些比较复杂规则的字符串。对于这些情况#xff0c;如果单纯依靠程序设计语言本身#xff0c;则往往会使得用户通过复杂的代码来实现。但是用户会不可避免地遇到处理某些文本的情况。有的时候用户还需要查找符合某些比较复杂规则的字符串。对于这些情况如果单纯依靠程序设计语言本身则往往会使得用户通过复杂的代码来实现。但是如果使用正则表达式则会以非常简短的代码来完成 正则表达式是通过一些特殊字符的排列用以查找、替换、删除一行或多行文字字符串简单的说正则表达式就是用在字符串的处理上面的一项表示式。由于正则表达式语法简练功能强得到了许多程序设计语言的支持包括Java、C、Perl以及Shell等 1.2基本正则表达式 基本正则表达式(Basic Regular ExpressionBRE)又称为标准正则表达式是最早制订的正则表达式规范仅支持最基本的元字符集。基本正则表达式是POSIX规范制订的两种正则表达式诺法标准之一另外一种语法标准称为扩展正则表达式 1.2.1常见元字符
元字符 说明
^ 以某个字符开头
$ 以某个字符结尾
. 匹配任意单字符
* 对前一项进行0次或者多次重复
{m,n} 匹配将前一项字符重复m-n次{m,},,n},{mn}
[] 对方括号内的单字符进行匹配
[^] 不匹配方括号内的单字符
^[] 匹配以某个字符开头的行
() 定义一个子表达式
词首【\或\b】【\或\b】 其后面的任意字符必须作为单词首部出现;其前面的任意字符必须作单词和词尾锚定为尾部出现
\ 转义字符让一些特殊符号失效
1.2.2POSIX字符类
POSIX字符类是一个形如[:...:]的特殊元序列(metasequence)他可以用于匹配特定的字符范国
1.2.3示例
[ab]检索包含a或包含b的行信息注意[ ]只能表示一个对象
# 检索包含d或者D行的信息
[rootserver ~]# grep -n [dD] /etc/passwd#检索字母包含o的行信息
[rootserver ~]# grep -n [oo] /etc/passwd
[^] :检索不包含关键字的行信息反向着色
# 检索不包含字母o的的行信息
[rootserver ~]# grep -n [^o] /etc/passwd# 检索不以r开头的前不包含oot的行信息
[rootserver ~]# grep -n [^r]oot /etc/passwd
[-] : 检索范围如[0-9] [a-z] [A-Z] [a-zA-Z] [0-9a-zA-Z]
# 检索包含7-9的数字行信息
[rootserver ~]# grep -n [7-9] /etc/passwd# 检索包含大写字母
[rootserver ~]# grep -n [A-Z] /etc/passwd#检索数字和字母的行信息
[rootserver ~]# grep -n [[:alnum:]] /etc/passwd
[rootserver ~]# grep -n [0-9a-zA-Z] /etc/passwd
^行首与$行尾
# 检索root开头的行信息
[rootserver ~]# grep -n ^root /etc/passwd# 检索以#开头的信息
[rootserver ~]# grep -n ^# /etc/sos/sos.conf # 检索[开头的行信息
[rootserver ~]# grep -n ^\[ /etc/sos/sos.conf #检索数字结尾的行信息
[rootserver ~]# grep -n [0-9]$ /etc/sos/sos.conf
6:#verbose 3
9:#log-size 15
[rootserver ~]# grep -n [0-9]$ /etc/sos/sos.conf # 检索空白行
[rootserver ~]# grep -n ^$ /etc/sos/sos.conf # 注意
# 检索不包含r o t
[rootserver ~]# grep -n [^root] /etc/passwd
# 检索以r o t 开头的行信息
[rootserver ~]# grep -n ^[root] /etc/passwd
# 检索以root开头的行信息
[rootserver ~]# grep -n ^root /etc/passwd
点.和*
# 检索以r开头t结尾中间包含2个字母的行信息
[rootserver ~]# grep -n r..t /etc/passwd# 检索至少包含一个字母w的行信息
[rootserver ~]# grep -n ww* /etc/passwd# 检索至少包含俩个oo的行信息
[rootserver ~]# grep -n ooo* /etc/passwd# 检索以包含.的行信息
[rootserver ~]# grep -n \. /etc/passwd
1.3拓展正则表达式
1.3.1概念 扩展正则表达式(Extended Regular ExpressionERE)支持比基本正则表达式更多的元字符但是扩展正则表达式对有些基本正则表达式所支持的元字符并不支持。前面介绍的元字“[“以及”[^]”这6个元字符在扩展正则表达式都得到了支持并且其意义和用法都完全相同不再重复介绍。接下来重点介绍一下在扩展正则表达式中新增加的一些元字符。 元字符 说明将前一项字符进行0次或者1次的重复匹配将前一项进行1次或者多次的重复匹配
| 匹配|符号左边或者右边的字符
1.3.2示例
# 显示文件以bash结尾的行信息
[rootserver ~]# grep -n bash$ /etc/passwd# 找出仅包含三位数或者四位数的行信息
[rootserver ~]# grep -n \[0-9]\{3,4\}\ /etc/passwd
[rootserver ~]# grep -n \[[:digit:]]\{3,4\}\ /etc/passwd# 检索/etc/grub2.cfg文件中检索至少一个空白字符开头后跟非空字符的行
[rootserver ~]# egrep -n ^[[:space:]][^[:space:]] /etc/grub2.cfg
[rootserver ~]# grep -n ^[[:space:]]\[^[:space:]] /etc/grub2.cfg
[rootserver ~]# grep -nE ^[[:space:]][^[:space:]] /etc/grub2.cfg
#解释
# ^[[:space:]]以空白字符开头
# 至少出现一次
# [^[:space:]]不包含空白字符
# -E支持启用扩展正则
# 查看端口号
[rootserver ~]# netstat -tan#检索netstat -tan 显示信息中包含LISTEN后跟上0个或多个空白字符结尾方行信息
[rootserver ~]# netstat -tan | grep LISTEN[[:space:]]*$“
# *$:重复前面内容0次或多次作为行结尾#检索fdisk -l显示内容中包含以/dev开头后跟上n的相关信息
[rootserver ~]# fdisk -l | grep ^/dev/n# 检索/proc/meminfo文件中所有以大写A或者大写S开头的行信息
[rootserver ~]# grep -n ^[AS] /proc/meminfo # 显示/etc/passwd 文件中root、sshd、chrony的相关信息
[rootserver ~]# grep -nE (root|sshd|chorny) /etc/passwd
[rootserver ~]# egrep -n (root|sshd|chorny) /etc/passwd# 检索ifconfig命令显示结果中的1-255的整数共
[rootserver ~]# ifconfig | grep -oE \([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\
[rootserver ~]# ifconfig | grep -o \([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\ # 检索1dd /usr/bin/cat 命令结果中的文件路径
[rootserver ~]# ldd /usr/bin/cat | grep -Eo /[^[:space:]]
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2