什么是正则表达式?
作用:和特殊字符一样。
就是为了处理大量的字符串及文本而定义的一套规则和方法。
开发者
假设"@"代表"I am","!"代表"oldboy",
则执行echo"@!"的结果就是输出"I am oldboy"。
2、提高效率,快速获取想要的内容。
3、三剑客命令grep(egrep)、sed、swk.
其工作是以行为单位,即一次处理一行。
4、实践讲解
易混肴事项:
1、和通配符区别。
2、开发人员正则。一般是Perl兼容正则表达式。
3、Linux系统三剑客正则表达式*****。
正则表达式分类:
基本正则grep(BRE):
^尖角号以……开头,^oldboy 以oldboy开头
$ 美元符 oldboy$ 以oldboy结尾
^$ 空行
. 匹配任意一个且只有任意一个字符,和通配符?一样
\ 让有意义的字符脱掉马甲 还原本义
* 重复前面字符0次或多次
.* 表示所有内容
^.* 组合符 匹配任意以0个或多个字符开头的内容
.*$ 组合符以任意0个或多个字符结尾
[abc] 匹配[]集合内的任意一个字符a或b或c ;[abc]也可以写成[a-c]
[^abc] 匹配不包括^后面的一个字符a或b或c
扩展正则egrep(ERE):
+ 匹配一个字符一次或多次
[:/]+ 匹配括号内的:或/字符一次或一次以上
? 匹配前一个字符0次或一次
| 或者同时过滤多个字符串
() 分组过滤被括起来的东西,表示一个整体
\n 引用()小括号前面的内容 例如:(aa)\1,匹配aaaa
a{n,m} 匹配前一个字符最少n次,最多m次
a{n,} 匹配前一个字符最少n次
a{n} 匹配前一个字符正好n次
a{,m} 匹配前一个字符最多m次
特殊中括号:
[:digit:] 匹配任意一个数字字符,相当于[0-9]
[:lower:] 匹配小写字母,相当于[a-z]
[:upper:] 匹配大写字母,相当于[A-Z]
元字符:
\b 匹配单词边界 类似grep -w
\d 匹配单个数字字符
Linux三剑客:
awk sed grep:
sed:
Sed是操作、过滤和转换文本内容的强大工具。
常用功能有对文件实现快速增删改查(增加、删除、修改、查询),
其中查询的功能中最常用的2大功能是过滤(过滤指定字符串)和取行(取出指定行)。
sed [选项] [sed内置命令字符] [文件]
选项:
-n 取消默认sed的输出,常与sed内置命令的p连用※
-i 直接修改文件内容,而不是输出到终端。
如果不使用-i选项sed只是修改在内存中的数据,并不会影响磁盘上的文件※
sed的内置命令字符说明
s 替换
g 全局global
p 打印print
d 删除delete
练习:
环境:
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
问题1:输出oldboy.txt的第2-3行内容※。
sed -n '2,3p' oldgirl.txt
问题2:过滤出含有oldboy字符串的行※。
grep oldboy oldgirl.txt
问题3:删除含有oldboy字符串的行※。
sed '/oldboy/d' oldgirl.txt
问题4:将文件中的oldboy字符串全部替换为oldgirl※。
sed 's#oldboy#oldgirl#g' oldgirl.txt
问题5:将文件中的oldboy字符串全部替换为oldgirl,同时将QQ号码49000448改为31333741。
sed -e 's#oldboy#oldgirl#g' -e 's#49000448#31333741#g' oldgril.txt
网友评论