3.19Day14课堂笔记(正则表达式与sed流编辑器)

第十一章 [endif]Linux正则表达式与三剑客知识应用实践

1、什么是正则表达式:

作用和特殊字符一样

正则表达式是为处理大量的字符串及文本而定义的一套规则和方法

假设@代表“i am”,  “!”代表“oldboy”

则执行ceho“@!”就表示输出“i am oldboy”

2、提高效率,快速获取到想要的内容

3、适用于三剑客命令:grep(egrep), sed ,awk

以行为单位处理,

4、实践讲解

易混淆事项

1、 和通配符区别

2、和开发正则有区别。一般是perl兼容正则表达式。

3、 Linux系统三剑客

环境准备:

export  LC_ALL=C

分类

1、BRE   grep

2、GRE  加-E或egrep

Test目录输入这些进行环境准备

mkdir ~/test -pcat >~/test/oldboy.txt<

I am oldboy teacher!I teach linux.I like badminton ball ,billiard ball and chinese chess!our site is http://www.oldboyedu.commy qq num is 49000448.not 4900000448.my god ,i am not oldbey,but OLDBOY!EOF


ls -lF /data|grep “/$”查找斜线结尾

cat oldboy.txt -n (显示行号查找)


Linux 正则符号释义

基本正则:grep开头搜索等

^尖角号 以。。。开头 ^oldboy 以oldboy开头

$美元符 以。。。结尾 oldboy$ 以oldboy结尾

^$ 空行 以开头结尾,以结尾开头

. 匹配任意一个且只有一个字符 和通配符?含义一样

\ 让更有意义的字符脱掉马甲,还原本意

* 重复前面字符0次或多次

.* 表示所有内容

^.* 组合符 匹配以任意多个字符开头的内容

.*$ 以任意0个字符或多个字符结尾

[abc] 匹配[]集合内的任意一个字符a或b或c;[abc]可以写成[a-c]

[^abc] 匹配不包含^后的任意字符a或b或c


扩展正则(GRE) 加-E或egrep:

+ 匹配前一个字符一次或多次

[:/]+  匹配括号内:或/字符1次或1次以上

?匹配一个字符0次或1次

| 或者同时过滤多个字符串

a{n,m} 匹配前a字符最少n次,最多m次

a{n,} 匹配前a字符最少n次

a{n} 匹配前a字符正好n次

a{,m} 匹配前a字符最多m次

()分组过滤被括起来的东西表示一个整体

\n引用前面()小括号里的内容,例如:(aa)、1,匹配aaaa


特殊符号中括号

[:alnum:] 匹配任意一个字母或数字字符,相当于[a-zA-Z0-9]   [[:alnum:]]

元字符:

\b  只匹配单词  相当于grep -w  过滤单词

-d 匹配单个数字字符(需用grep -p)

sed:流编辑器(三剑客之老二)

老大awk老二 sed   老三grep

Sed是操作、过滤、和转换文本内容的强大工具



命令格式:

sed [选项]  [sed内置命令字符]  [输入文件]


选项:

-n    取消默认sed输出,常与sed

-i    直接修改文件的内容,而不是输出到终端


内置命令字符说明

s 替换

g 全局global

p 打印 peint

d删除 delete


问题1:输出oldboy.txt的第2-3行内容※。打印行

[root@liutengda58~/test]# sed -n '2,3p' oldgirl.txt

I like badminton ball ,billiard ball and chinese chess!

our site is http://www.oldboyedu.com


问题二过滤出含有oldboy字符串的行  

用grep过滤:

[root@liutengda58 ~/test]# grep oldboy oldgirl.txt

I am oldboy teacher!

our site is http://www.oldboyedu.com

用sed过滤:

[root@liutengda58~/test]# sed -n  '/oldboy/p'  oldgirl.txt

I am oldboy teacher!

our site is http://www.oldboyedu.com


问题三:删除oldboy字符串的行

[root@liutengda58~/test]# sed  ‘/oldboy/d’  oldgirl.txt

I am oldboy teacher!

our site is http://www.oldboyedu.com


问题四:讲oldboy字符串全部替换为oldgril

Vim替换:

:%s/oldboy/oldgirl/g

Sed:

Sed‘s#想替换啥#用啥换#g' 文件名

[root@liutengda58~/test]# sed 's#oldboy#oldgirl#g' oldgirl.txt

I am oldgirl teacher

I like badminton ball ,billiard ball and chinese chess!

our site is http://www.oldgirledu.com

my qq num is 49000448.


问题五:将文件中的oldboy字符串全部替换为oldgirl 同时将123515替换成123144

连续替换

Sed  -e  ‘s#oldboy#oldgirl#g’  -e  ‘s#123515#123144#g’  oldboy.txt

你可能感兴趣的:(3.19Day14课堂笔记(正则表达式与sed流编辑器))