栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Shell编程之正则表达式与文本处理器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Shell编程之正则表达式与文本处理器

目录

一、正则表达式

1.基础正则表达式

2.扩展正则表达式

3.linux中文本处理工具

4.基础正则表达式元字符

5.扩充正则表达式元字符

二、grep的选项作用

1.使用grep 查找error 的行​

 2.过滤出ip(head -1指第一行)​

3.统计root字符行总行数

​ 三、sort的选项作用

1.sort后面不加任何字母,默认字母开头排序

2.第三区间数字排列

四、sed

1.sed工具

2.sed命令格式

3.常用选项

案例:输出所有内容

案例:输出第2行,输出第2至第4行

 4.操作

5.迁移

案例:将包含the 的行迁移至文件末尾,{;}用于多个操作

五、awk

1.介绍awk

2.工作原理

3.awk的内置变量

4.用法示例

案例:以冒号做分隔符显示分隔后的第五列

5.awk中使用if语句 

六:总结


引言:在工作环境里,我们会经常使用网上三剑客:grep、sed、awk,我们要熟练运用并且还需要使用一些小工具,比如grep,sed,awk。

一、正则表达式

1.基础正则表达式

2.扩展正则表达式

定义:正则表达式简写为RE(regex),又称为正规表达式、常规表达式,使用字符串来表示,通常用于判断语句中,用来检查某一字符串是否满足某一格式。

3.linux中文本处理工具

grep

egrep

sed

awk

4.基础正则表达式元字符
:转义字符,!、n等

^:匹配字符串开始的位置,比如^a、^the

$:匹配字符串结束的位置,比如word$

.:匹配除n之外的任意字符,比如go.d,g..d

*:匹配前面子表达式0次或者多次,比如goo*d,go.*d

[list]:匹配list列表中的一个字符,比如:go[ola]d、[abc]

[^list]:匹配任意不在list列表中的一个字符,比如:[^a-z]、[^0-9]

{r,m}:匹配前面的子表达式n到m次,有{n}、{n,}、{n,m}三种格式,比如go{2}d

+:匹配前面子表达式1次以上,比如go+d,匹配至少一个o

?:匹配前面子表达式0次或者1次,比如go?d,将匹配gd或着god

():将括号中的字符串作为一个整体,比如(xyz)+,将匹配xyz整体1次以上,比如xyzxyz

|:以或的方式匹配字条串,比如good|food,将匹配good或者food,g(oo|la)d,将匹配good或者glad。

5.扩充正则表达式元字符
+:匹配前面子表达式1次以上
例:go+d,将匹配至少一个o
 
?:匹配前面子表达式0次或者1次
例:go?d,将匹配gd或god
 
():将括号中的字符串作为一个整体
例:(xyz)+,将匹配xyz整体1次以上,如xyzxyz
 
|:以或的方式匹配字条串
例:good|food,将匹配good或者food
例:g(oo|la)d,将匹配good或者glad

二、grep的选项作用
-e:开启扩展的正则表达式

-c:计算找到‘搜寻字符串’的次数

-i:忽略大小写的不同,所以大小写视为相同

-o:只显示被模式匹配到的字符串

-v:反向选择,亦即显示出没有‘搜寻字符串’内容的那一行,(反向查找,输出与查找条件不相符的行)

--color=auto:可以将找到的关键词部分加上颜色显示

-n:顺便输出行号

1.使用grep 查找error 的行

 2.过滤出ip(head -1指第一行)

3.统计root字符行总行数

 三、sort的选项作用

-t:指定分隔符,默认使用{Tab}吧,键或者空格分隔

-k:指定排序区域,哪个区间排序

-n:按照数字进行排序,默认是以文字形式排序

-u:等同于uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功

-r:反向排序,默认是升序,-r就是降序

-o:将排序后的结果转存至指定文件

-f: 忽略大小写,会将小写的字母都转换为大写字母来进行比较

-b: 忽略每行前面的空格

1.sort后面不加任何字母,默认字母开头排序

2.第三区间数字排列

 

四、sed

1.sed工具

文本处理工具,读取文本内容,根据指定的条件进行处理,如删除、替换、添加等

可在无交互的情况下实现相当复杂的文本处理操作

被广泛应用于Shell脚本,以完成自动化处理任务

sed依赖于正则表达式。

工作原理:读取→执行→显示

读取: sed从输入流 (文件、管道、标准输入) 中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)

执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。

显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

2.sed命令格式

sed -e ‘编辑指令’ 文件1 文件2......

sed -n -e '编辑指令' 文件1 文件2......

sed -i -e '编辑指令' 文件1 文件2......

sed [选项] ‘操作’ 参数

3.常用选项

-e 指定要执行的命令,只有一个编辑命令时可省略

-n 只输出处理后的行,读入时不显示

-i 直接编辑文件,而不输出结果

-f 用指定的脚本文件来处理输出的文本文件

-r, -E 使用扩展正则表达式

-h或--help 显示帮助

 

-s 将多个文件视为独立文件,而不是单个连续的长文件流

案例:输出所有内容

案例:输出第2行,输出第2至第4行

 4.操作

a:增加,在当前行下面增加一行指定内容

c:替换,将选定行替换为指定内容

d:删除,删除选定的行

i: 插入,在选定行上面插入一行指定内容

p:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容,如果有非打印字符,则以ASCII码输出。其通常与“-n”选项一起使用

s:替换,替换指定字符

y:字符转换

5.迁移

H:复制到剪贴板

g、G:将剪贴板中的数据覆盖/追加至指定行

w:保存为文件

r:读取指定文件

a:追加指定内容

I,i:忽略大小写

案例:将包含the 的行迁移至文件末尾,{;}用于多个操作

五、awk

1.介绍awk

awk是一种功能强大的编辑工具,无交互的情况下实现复杂的文本操作。

命令格式:

awk 选项 ‘模式或者条件{编辑指令}’ 文件1 文件2

awk -f 脚本文件 文件1 文件2

2.工作原理

逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

sed和awk的区别

sed命令常用于一整行的处理,而awk比较、倾向于将一行分成多个""字段"然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符"

&& 表示 "与"、|| 表示 "或"、! 表示 "非";还可以进行简单的数学运算,如+、-"、*、/、%、^分别表示加、减、乘、除、取余和乘方

3.awk的内置变量

FS:指定每行文本的字段分隔符,缺省为空格或制表位

NF:当前处理的行的字段个数

NR:当前处理的行的行号(序数)

$0:当前处理的行的整行内容

$n:当前处理行的第n个字段(第n列)

4.用法示例

案例:以冒号做分隔符显示分隔后的第五列

 

5.awk中使用if语句 

awk的if语句也分为单分支、双分支和多分支

单分支为if () {}

双分支为if() {}else{} 

多分支为if() {}else if () {}else{}

六:总结

 使用sort,sed,awk,可以使我们能操作更多,使用方便。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号