课学笔记day14

第十一章

企业笔试的目的

幼鹅效应

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

预定义特殊中括号

课学笔记day14_第1张图片


元字符

\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

你可能感兴趣的:(课学笔记day14)