正则表达式,一张表教你学会

系列文章目录

第一章 正则表达式,一张表教你学会
第二章 Linux之awk的进阶使用
第三章 Linux之sed命令的基本使用
第四章 Linux之grep、egrep命令(文本三剑客完)


正则表达式 regular expression

可以在egrep、sed、awk等等命令中使用
egrep中的使用

[root@localhost 217]# egrep "</h1>$" csweb.html 
<h1>Welcome to changsha!</h1>
<h1>长沙欢迎您!</h1>

元字符:有特殊作用的字符

元字符意义举例举例意义可匹配结果
^行开头^aa以aa开头aa aaa aa_ aa123 …
$行结尾aa$以aa结尾aa 312aa …
^$空行
^aa$整行只有aa^a$匹配只有a的行,aba也不行a
?前面的字符出现1次以下ab?出现0次或1次,就是不确定的意思a ab
+前面的字符出现1次以上ab+b出现1次以上ab abb abbb ……
{}指定前面的字符出现次数范围ab{2,}cb出现2次以上,{,5}这是5次以下abbc abbbc ……
*前面的字符出现任意次ab*b出现0次或多次a ab abb abbb ……
.除换行符外任意一个字符gr.pgr后接一个任意字符然后是pgrep grap gr@p gr1p ……
.{}指定任意字符出现次数ab.{2,4}b后面出现2到4个任意字符ab#$ ab123 ab!4rq ab…
.*代表任意个任意字符……
|a|b包含a或b
[]文字字符域,单个字符匹配[abc]包含a、b、c任意一个,等同a|b|cawd _23rc bbb
[^]取反,只要一行里有一个字符符合条件整行都会匹配[^abc]不包含abc中任意一个字符qwe a13 ……
\s空白符(空格、tab)a\sba和b之间有空白a b、a b
\<、\b单词开头\<re单词以re开头remove reverse review ……
\>、\b单词结尾tion\>单词以tion结尾fanction revolution ……
()实现多个字符分组f(oo)*oo可以出现任意次f foo foooo ……

例一:查找文章有效行,过滤注释和空行

egrep -v "^#|^$" /etc/ssh/sshd_config

例二:查找以非数字开头的行,[:digit:]=[0-9]

egrep "^[^[:digit:]]" rex.txt

例三:准确查找,在chang、changsha、quchang、quchangsha中查找到’chang‘

echo "chang changsha quchang quchangsha" | egrep "\<chang\>"   # "\<chang\>"等同于"\bchang\b"

例四:查找出/etc/passwd文件中用户名含有zhang并且使用bash的用户

egrep "zhang" /etc/passwd | egrep "bash$"

例五:找出邮箱

egrep -o "[0-Z_.]+@[0-Z]+\.[a-z]+" mail.txt
[root@localhost 21718]# egrep -o "[0-Z_.]+@[0-Z]+\.[a-z]+" mail.txt 
feng@qq.com
2134@163.com
meng.xianghui@yahoo.cn
liudehua@sina.com
10001@qq.com
qilu@qilu.edu
qilu@qilu.edu

例六:找出网站,需要过滤的网站格式可能不同,可以自行修改

egrep -o "[0-Z]+://([0-Z]+\.){2,3}[0-Z]+((/[0-Z_]+)+)?" web.txt
[root@localhost 21718]# egrep -o "[0-Z]+://([0-Z]+\.){2,3}[0-Z]+((/[0-Z._]+)+)?" web.txt 
http://www.baidu.com
http://www.sina.com
http://www.163.com
http://www.12306.cn
http://www.qillu.edu
rsync://www.github.com/abc
ftp://192.168.0.1
ftp://www.baidu.com
http://c.biancheng.net/c/ascii

例七:找出ip地址

ipv4 IP地址类型:
A:1~126
B:128~191
C:192~223

A类ip地址的格式:
第1段:1~126
第2~4段:0~255

思路:
0~126
1位数字:1-9
2位数字:10-99
3位数字:100-119 120-126

0~255
1位数字:0-9
2位数字:10~99
3位数字:100~199 200~249 250~255

B类ip地址格式:
第1段:128~191
第2~4段:0~255

思路同上

egrep  "\b([1-9]|[1-9][0-9]|1[01][0-9]|12[0-6])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\b"		# 查找A类地址
egrep  "\b(12[89]|1[3-8][0-9]|19[01])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\b"		#查找B类地址
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只何

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值