Shell脚本应用
技能展示
基础正则表达式
扩展正则表达式
sed工具使用方法
awk工具使用方法
简 介
在前面几章我们已经介绍了Shell脚本的编写规则与各种语句的具体应用,但是实际生
产环境中,Shell脚本通常与正则表达式,文本处理工具结合使用。因此本章我们将介绍
正则表达式与Linux系统中两个功能强大的文本处理工具。
重点
正则表达式的使用方法
sed与awk工具的使用方法
理论讲解
正则表达式
Shell脚本的基础用法,已经可以利用条件判断,循环等语句编辑Shell脚本,接下来我们
将开始介绍一个很重要的概念——正则表达式(RegularExpression,RE)。
正则表达式概念
正则表达式的定义
正则表达式又称为正规表达式,常规表达式,在代码中常简写为regex.regexp或RE。正
则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串,简单来
说,是一种匹配字符串的方法,通常一些特殊符号,实现快速查找,删除,替换某个特
定字符串。
正则表达式一般用于脚本编程与文本编辑器中,很多文本处理器与程序设计语言均支持正则
表达式。如前面提到的Perl.Linux系统中常见的文本处理器(grep.egrep.sed.awk).正则表达
式具备很强大的文本匹配功能,能够在文本海洋中快速高效地处理文本。
一.正则表达式
1.正则表达式的作用和组成
1)正则表达式的作用
按照规则对文本数据进行过滤处理
版主用户快速查找文本内容
2)正则表达式的组成
普通字符串
大写字母A-Z
小写字母a-z符号
元字符
- 正则表达式的常见选项和应用
1)正则表达式的常见选项和应用
-n:显示行号
-o:显示匹配内容
-i:不区分大小写
-vn:取反
2)正则表达式常见的元字符
^:起始内容
$:结束内容
.:匹配任意单个字符
[]:匹配括号中的内容
[-]:匹配括号里边内容的范围
{n}:匹配范围的次数
{n1-n2}:匹配开始和结束内容
[^]:匹配括号之外的任意字符
:转义字符
3.grep的应用
1)1)过滤关键字中包含the的并且显示行号
[[email protected] ~]# grep -n ‘the’ test.txt
2)1)查找开头是the的行
[[email protected] ~]# grep -n ‘^the’ test.txt
3)匹配任意单个字符开头是w中间任意结束为d的关键字
[[email protected] ~]# grep -n ‘w…d’ test.txt
4)匹配括号里边的内容
[[email protected] ~]# grep -n ‘sh[io]rt’ test.txt
5)只显示匹配内容
[[email protected] ~]# grep -o ‘wood’ test.txt
6)转义字符使用过滤IP地址
[[email protected] ~]# grep -n -E “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}” test.txt
4.扩展正则表达式
1)扩展正则表达式常见的选项
+:重复一个或者一个以上的前一个字符
?:显示当前字母前的一个字符
|:或者,多出多个字符
():查找组字符串
()+:辨别多个重复的组
2)扩展正则表达式的应用
wo开头d前边重读一个或者多个字符显示出来
[[email protected] ~]# egrep -n ‘wo+d’ test.txt
匹配d前边任意字符显示出来
[[email protected] ~]# egrep -n ‘?d’ test.txt
匹配linux或者Linux字符显示出来
[[email protected] ~]# egrep -n ‘linux|Linux’ test.txt
匹配h,o,r任意字符显示出来
[[email protected] ~]# egrep -n ‘(h|o|r)’ test.txt
匹配以s开头结束为t中间是hor的字符
[[email protected] ~]# egrep -n ‘s(hor)t’ test.txt
二.sed和awk文本处理应用
1.sed的作用和工作流程
1)sed的作用
sed是一个文本文件解释转换工具
用于读取.修改.显示配置文件数据
2)sed处理数据的流程
读取:从文件.输入.管道命令读取数据,临时存储读取的数据
执行:根据sed命令在模式操作空间中进行无交互修改数据
显示:将文本文件的修改结果显示给用户
2.sed命令常见选项和操作符
1)sed命令常见的选项
-n:显示处理后的结果
-h:显示帮助
-e:指定使用脚本或者命令处理文本数据
-i:直接编辑文本文件
2)sed常见的操作符
a:添加内容
d:删除内容
s:替换内容
y:字符转换
c:将指定行替换成指定内容
i:向匹配行插入指定内容
3.sed的应用
1)显示1到5行数据
[[email protected] ~]# sed -n ‘1,5p’ test.txt
2)显示奇数行
[[email protected] ~]# sed -n -e ‘1p;3p;5p;7p’ test.txt
3)删除第行数据
[[email protected] ~]# sed ‘1d’ test.txt
4)将大写Linux替换为小写的linux
[[email protected] ~]# sed -i ‘s/Linux/linux/’ test.txt
5)对ip关键字开头添加注释
[[email protected] ~]# sed -i ‘/ip/s//#/’ test.txt
6)将1~5行数据迁移到37行后
[[email protected] ~]# sed -i ‘1,5{H;d};37G’ test.txt
4.awk
1)awk的作用
读取文本数据根据需要过滤关键内容
2)awk的变量
FS:文本字段分隔符,可以使用空格作为占位符
NF:处理行数
NR:处理数据的行号
$0:处理整行数据
$n:处理数据行的第几列数据
5.awk的基本应用
1.awk显示文本中的内容
[[email protected] ~]# awk ‘{print}’ 1.txt
2)显示第一列数据
[[email protected] ~]# awk ‘{print $1}’ 1.txt
3)显示第一列和第二列数据
[[email protected] ~]# awk ‘{print $1,$2}’ 1.txt
4)显示第一列和第二列数据使用–号分割
[[email protected] ~]# awk ‘{print $1"----"$2}’ 1.txt
5)显示第一行和第二行数据
[[email protected] ~]# awk ‘NR1,NR2{print}’ 1.txt
6)过滤/etc/passwd的第七列数据
[[email protected] ~]# awk -F ‘:’ {‘print $7’} /etc/passwd
操作完成感谢观看,拜拜????