第十一章
企业笔试的目的
幼鹅效应
1、什么是正则表达式
1、作用和特殊字符一样
为处理大量字符串及文本而定义的一套规则和方法
例:@=I am, !=oldboy,则echo " @!"就是输出''I am oldboy"
2、提高效率
其工作时以行为单位进行,即一次处理一行
3、适用三剑客 grep(egrep) ,sed,awk命令支持,其他命令无法使用
4、怎么用 实践
易混淆的事项
1、它和通配符有本质区别
2、开发人员正则
linux三剑客
准备环境
[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、基本正则表达式集合 grep
2、扩展正则表达式集合 egrep
正则
基本正则 grep
尖角号^用法为^oldboy 表示匹配以oldboy单词开头的行 字符也可以
例:grep "^my" oldgirl.txt grep后加个-n就能显示行号
美元符 用法为oldboy$ 表示匹配以oldboy单词结尾的行
例:grep "m$" oldgirl.txt
组合符^$ 用法为^$oldboy 表示空行 以^开头的行,以$结尾的行
例:grep "^$" oldgirl.txt显示空行 加-v取后
点号. 表示匹配任意一个有且只有一个字符(但不能匹配空行)
例:grep ".$" oldgirl.txt 点是任意结尾的字符
星号 * 匹配前一个字符(连续出现)0次或1次以上
例:grep "0*" oldgirl.txt
.* 组合符 匹配所有内容包空行
例:grep ".*" oldgirl.txt 所有行都显示
^.*组合符 匹配以任意多个字符开头的内容
例:grep "^o.*" oldgirl.txt 以0开头所有的行
.*$组合符 以任意多个字符结尾的内容
例:grep ".*\m$" oldgirl.txt 所有以m结尾的行
[abc]或[a-z] 匹配[]集合内的任意一个字符a或b或c
例:grep "[a-z]" oldgirl.txt 显示a-z所有字符
[^abc] 匹配不包含^后的任意字符a或b或c,^表示对[abc]取反
例:grep "[^a-z]" oldgirl.txt 反取
转义符\ 让特殊含义字符脱马甲显原形 如 \. 点只表示小数点
例:grep "\." oldgirl.txt 原来点代表所有,现在只显示点
扩展正则 egrep=grep -E
+ 匹配前一个字符1次或1次以上
例: egrep "0+" oldboy.txt = 一个0以上选出来
过滤 "字符 匹配前一字符1次或1次以上都可 " 文件名
[:/]+ 匹配括号内的:或/字符1次或1次以上
例: egrep "[:/]+" oldboy.txt = :/选出来 中括号内 或的关系
过滤 "字符 匹配前一字符1次或1次以上都可 " 文件名
? 匹配前一个字符0次或1次
例:egrep "(ss)?" oldgirl.txt 就前面一个字符0次或1次
| 表示或者,即同时过滤多个字符串
例 egrep "oldboy|like" oldboy.txt =oldboy like选出来
过滤 "字符串 或者 字符串" 文件名
a{n,m} 匹配前面一个字符最少n次,最多m次 egrep "s{0,1}" oldgirl.txt
自由主题
a{n,} 匹配前面一个字符最少n次 egrep "s{2,}" oldgirl.txt 这是2个ss起
a{n} 匹配前面一个字符正好n次 egrep "s{2,}" oldgirl.txt 这是2个s的
a{,m} 匹配前面一个字符最多m次 egrep "s{,2}" oldgirl.txt 这是最多2个ss
( ) 分组过滤被包括起来的东西表示一个整体,另()的内容 可以被后面的\n引用,n为数字,表示引用第几个()的内容
例 egrep -o "(0)(0)\1\2" oldboy.txt =0000显出来
过滤 只选 两内容引用1引用2 文件名 显示内容
\n 引用前面()里面的内容;如(aa)\1,匹配aaaa
预定义特殊中括号
图
图
元字符
\b 匹配单词边界 相当grep -w,过滤单词 重 要
egrep "\oldboy\b" oldboy.txt \b是针对单词的
\B 匹配非单词边界
egrep "\oldboy\B" oldgirl.txt \B是针对字符串的
\w
\W
\D 匹配单个非数字字符 重 要
和grep -p 过滤pel兼容正则表达式
grep -P "\d" oldboy.txt
三剑客
awk大哥 grep 小三
sed 三剑客 老二
流编辑器 增删改查
语法 选项 sed内置命令字符 文件
-n 取消它的默认输出
例: sed -n "2,3p" oldgirl.txt
取消默认输出 2到3行 打印 sed=默认输出文件
-i 直接修改文件内容
例 sed -i '/111/d' oldgirl.txt
直接修改文件内容 删除111行
-e 多次编辑
例:sed -e "s#oldboy#oldgirl#g" -e "s#49000448#31333741#g" oldgirl.txt
内置符
s 表示替换
例:sed "s#oldboy#oldgirl#g" oldgirl.txt
p 打印print
例:sed -n "/oldboy/p" oldgirl.txt 打印显示oldboy的行
d 删除
例:sed "/oldboy/d" oldgirl.txt 删除oldboy这行cat 看不到加-i可看
g 全局
a 指定行后加文件内容
sed -i "4a 2222" oldgirl.txt
i 指定行前加文件内容
sed -i "4i 2222" oldgirl.txt