正则表达式及grep

前端之家收集整理的这篇文章主要介绍了正则表达式及grep前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正则表达式:

正则表达式是基于样式匹配的文本处理技术的关键所在。

  1. 正则表达式的基本组成部分:

    ^ :行起始标记
    $ :行尾标记
    . :匹配任意一个(单个)字符
    [] :匹配包含在[字符]之中的任意一个字符
    [^] :匹配除[^字符]之外的任意一个字符
    [-] :匹配中指定范围内的任意一个字符
    ? :匹配之前的项1或0次
    + :匹配之前的项1次或多次
    * :匹配之前的项0或多次
    () :创建一个用于匹配的字串
    {n} :匹配之前的项n次
    {n,} :之前的项至少需要匹配n次
    {n,m} :指定之前的项所必需匹配
    | :交替匹配|两边的任意一项
    \ :转义字符可以将上面的特殊字符进行转义

  2. 案例:

    ^linux##linux开始

wKioL1g0NBvyX1JIAABpeX2cFqM204.jpg-wh_50

@H_301_40@linux$@H_301_40@@H_301_40@##@H_301_40@linux结束

wKiom1g0NEqynQS-AAA5sGtH3qc035.jpg-wh_50

@H_301_40@linuxfan. ##匹配@H_301_40@linuxfans

wKiom1g0NHmBLEE1AABKkalx_Aw618.jpg-wh_50

@H_301_40@coo[kl]@H_301_40@@H_301_40@##匹配@H_301_40@cool@H_301_40@cook

@H_301_40@

wKioL1g0NhzT2bZNAAAyFeJKycM121.jpg-wh_50

@H_301_40@9[^5689] ##匹配@H_301_40@91,92等,但不匹配@H_301_40@95,98

wKioL1g0NjqxOUEkAAA_IGfXzcM407.jpg-wh_50

@H_301_40@[0-9]@H_301_40@@H_301_40@##匹配任意一个所有的数字

wKioL1g0NjvQ1JpTAACBpHcwv2I906.jpg-wh_50

@H_301_40@[a-z]|[A-Z]@H_301_40@@H_301_40@##匹配任意一个所有大小写字母@H_301_40@,|属于扩展正则@H_301_40@grep -E支持

wKiom1g0NjvBr_wgAAB2nY2xkf4997.jpg-wh_50

@H_301_40@colou?r ##匹配@H_301_40@color@H_301_40@clolur,但是不能匹配@H_301_40@colouur

wKiom1g0NjvRvpZWAAAnNeiNeM4669.jpg-wh_50

@H_301_40@rollno-9+@H_301_40@@H_301_40@##匹配@H_301_40@rollno-9@H_301_40@rollno-99@H_301_40@rollno-999,但不匹配@H_301_40@rollno-

@H_301_40@co*l@H_301_40@ @H_301_40@##匹配@H_301_40@cl@H_301_40@col@H_301_40@cool@H_301_40@coool@H_301_40@

wKioL1g0NjyB8LkLAABMTK9AS_Y995.jpg-wh_50

@H_301_40@ma(tri)x@H_301_40@@H_301_40@##匹配@H_301_40@matrix

wKiom1g0NjyhuKwiAAA6F2JqX9k388.jpg-wh_50

@H_301_40@[0-9]{3}@H_301_40@@H_301_40@##匹配任意一个三位数,等于@H_301_40@[0-9][0-9][0-9]

@H_301_40@

wKioL1g0NvvCKlg-AACIl_R3-Gs109.jpg-wh_50

@H_301_40@[0-9]{2,} ##匹配任意一个两位数或更多位的数字

wKiom1g0NvuxAH7hAACDdG2IGt8977.jpg-wh_50

@H_301_40@[0-9]{2,5} ##匹配从两位数到五位数之间的任意一个数字

wKioL1g0NvzDu6G0AABa5C7k3Y0445.jpg-wh_50

@H_301_40@Oct (1st | 2nd) ##匹配@H_301_40@Oct 1st@H_301_40@Oct 2nd

wKiom1g0Nvyxxi4aAAA9N3hE4t8592.jpg-wh_50

@H_301_40@a\.b@H_301_40@@H_301_40@##匹配@H_301_40@a.b,但不能匹配@H_301_40@ajb

wKioL1g0NvywUAuEAABg0DHkoUY158.jpg-wh_50

@H_301_40@[a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4}@H_301_40@ @H_301_40@##匹配一个邮箱地址

wKioL1g0Nv3Dz3amAABUi9aZpnQ462.jpg-wh_50

@H_301_40@[0-9]{1,3}\.[0-9]{1,3}@H_301_40@ @H_301_40@##匹配@H_301_40@IP地址

wKiom1g0Nv2CWDeCAABnCMui_U0774.jpg-wh_50

@H_301_40@3.grep用法


@H_301_40@[root@ns ~]# cat /proc/meminfo |grep@H_301_40@ @H_301_40@-e Mem -e Cache -e Swap@H_301_40@ @H_301_40@##查看系统内存、缓存、交换分区@H_301_40@-e的作用是匹配多个表达式

wKioL1g0Nv2yUQxcAAB6UJo0AUM183.jpg-wh_50

[root@ns ~]# grep -R -o -n -E'[a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4}' /etc/ ##查找/etc目录下的所有文件中的邮件地址;-R递归,-n表示匹配的行号,-o输出匹配内容-E支持扩展正则表达式,

wKiom1g0Nv6Aod5UAAI46Wkl1l4537.jpg-wh_50

@H_301_40@[root@ns ~]# grep -R -c 'HOSTNAME' /etc/ |grep -v "0$"@H_301_40@ @H_301_40@##查找@H_301_40@/etc/目录下文件中包含“@H_301_40@HOSTNAME”的次数@H_301_40@-c统计匹配次数@H_301_40@-v取反

wKiom1g0Nv-yNFP7AAHgOFA96bY363.jpg-wh_50

@H_301_40@[root@ns ~]# grep -R -l 'HOSTNAME' /etc/@H_301_40@ @H_301_40@##查找包含“@H_301_40@HOSTNAME”的文件名,@H_301_40@-l显示匹配的文件名,@H_301_40@-L显示不匹配的文件

wKioL1g0NwCBfV6WAAHAy2g9oG8065.jpg-wh_50

@H_301_40@[root@ns ~]# dmesg | grep -n --color=auto 'eth'@H_301_40@ @H_301_40@##查找内核日志中@H_301_40@eth的行,显示颜色及行号

wKioL1g0NwGhIInzAADnMIVtLqQ694.jpg-wh_50

@H_301_40@[root@ns ~]# dmesg | grep -n -A3 -B2 --color=auto 'eth'@H_301_40@ @H_301_40@##@H_301_40@ dmesg 列出核心信息,再以@H_301_40@grep 找出内含@H_301_40@ eth 那行@H_301_40@,在关键字所在行的前两行与后三行也一起找出出来显示

wKiom1g0NwLTmA8GAAHxsx9lxvQ391.jpg-wh_50

@H_301_40@[root@ns ~]# cat /etc/passwd |grep -c bash$@H_301_40@ @H_301_40@##统计系统中能登录用户的个数

wKiom1g0NwLBJQL3AAAxy-4e6XE546.jpg-wh_50

@H_301_40@[root@ns tmp]# touch /tmp/{123,123123,456,1234567}.txt@H_301_40@ @H_301_40@##创建测试文件,以下三条命令是一样的效果,匹配文件@H_301_40@123,可以包含@H_301_40@1个到多个

wKioL1g0NwORJL7wAAB3_OE6uJI717.jpg-wh_50

@H_301_40@[root@ns tmp]# ls |grep -E '(123)+'

@H_301_40@[root@ns tmp]# ls |grep '\(123\)\+'

@H_301_40@[root@ns tmp]# ls |egrep@H_301_40@ @H_301_40@'(123)+'

wKioL1g0NwPTGU_bAACze0EMqJA158.jpg-wh_50

[root@ns ~]# ps -ef |grep -c httpd ##统计httpd进程数量

wKiom1g0NwPyg00YAAAuRNcwynM263.jpg-wh_50

@H_301_40@[root@ns ~]# grep -C 4 'games' --color /etc/passwd@H_301_40@ @H_301_40@##显示@H_301_40@games匹配的“@H_301_40@-C”前后@H_301_40@4

wKiom1g0NwSgT2wbAAF0U2YQKsE702.jpg-wh_50

@H_301_40@[root@ns ~]# grep ^adm /etc/group@H_301_40@ @H_301_40@##查看@H_301_40@adm组的信息

wKioL1g0NwSB2q7XAAA9fUJ_4HE985.jpg-wh_50

@H_301_40@[root@ns ~]# ip a |grep -E '^[0-9]' |awk -F : '{print $2}'@H_301_40@ @H_301_40@##获取网卡名称

wKiom1g0NwXx26iAAABALDSQlsk669.jpg-wh_50

@H_301_40@[root@ns ~]# ifconfig eth0 |grep -E -o 'inet addr:[^ ]*' |grep@H_301_40@ @H_301_40@-o '[0-9.]*'@H_301_40@ @H_301_40@##截取@H_301_40@ip地址,@H_301_40@[^ ]*

表示以非空字符作为结束符,@H_301_40@[0-9.]*表示数字和点的组合

wKioL1g0NwaShX6kAABZNG_Ce2k617.jpg-wh_50

@H_301_40@[root@ns ~]# ifconfig eth0 |grep -i hwaddr |awk '{print $5}'@H_301_40@ @H_301_40@##截取@H_301_40@MAC地址

测试文档:使用@H_301_40@grep -E命令练习正则表达式

@H_301_40@[root@ns tmp]# cat test.txt

@H_301_40@ABcd

@H_301_40@10.10.10.10

@H_301_40@color

@H_301_40@colur

@H_301_40@linuxfan2

@H_301_40@colouur

@H_301_40@rollno-9

@H_301_40@i like linux

@H_301_40@linux funny.

@H_301_40@I am linuxfan.

@H_301_40@rollno-99

@H_301_40@rollno-999

@H_301_40@cl

@H_301_40@col

@H_301_40@cool

@H_301_40@coool

@H_301_40@cook

@H_301_40@max

@H_301_40@matrix

@H_301_40@192.168.100.100

@H_301_40@123456789

@H_301_40@123123123

@H_301_40@123123

@H_301_40@23346123

@H_301_40@123

@H_301_40@12

@H_301_40@12345

@H_301_40@94

@H_301_40@95

@H_301_40@96

@H_301_40@97

@H_301_40@98

@H_301_40@99

@H_301_40@100

@H_301_40@Oct 1st

@H_301_40@Oct 2nd

@H_301_40@a.b

@H_301_40@ajb

@H_301_40@abc

@H_301_40@linuxfan@qq.com

@H_301_40@linux

@H_301_40@[root@ns tmp]#

wKioL1g0NwaC5zHEAABM_9WnVWQ170.jpg-wh_50



wKiom1g0NwbhqWIfAADX7RsGEpU439.jpg-wh_50

猜你在找的正则表达式相关文章