shell脚本(四)

shell脚本应用(四)

1.正则表达式的定义

​ 正则表达式又称正规表达式.常规表达式。在代码中常简写为regex,regexp或E。正则表达式
是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串
的方法,通过一些特殊符号,实现快速查找、删除.替换某个特定字符串。
​ 正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一
个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配,其中
普通字符包括大小写字母、数字、标点符号及一些其他符号,元字符则是指那些在正则表达式中
具有特殊意义的专用字符,可以用来规定其前导字符〈即位于元字符前面的字符)在目标对象中
的出现模式。
​ 正则表达式一般用于脚本编程与文本编辑器中。很多文本处理器与程序设计语言均支持正则表
达式,如前面提到的Perl、Linux系统中常见的文本处理器(grep、egrep, sed、awk),正则表达式具

备很强大的文本匹配功能.能够在文本海洋中快速高效地处理文本。

2.正则表达式用途

​ 对于一般计算机用户来说,由于使用到正则表达式的机会不多,所以无法体会正则表达式的魅
力,而对于系统管理员来说,正则表达式则是必备技能之一。
​ 正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,这些信息
有些是非常重要的,有些则仅是告知的信息。身为系统管理员如果直接看这么多的信息数据,无法
快速定位到重要的信息,如“用户账号登录失败”“服务启动失败”等信息。这时可以通过正则表达
式快速提取“有问题”的信息。如此一来,可以将运维工作变得更加简单、方便。
目前很多软件也支持正则表达式,最常见的就是邮件服务器。在Internet中,垃圾/广告邮件经
常会造成网络塞车,如果在服务器端就将这些问题邮件提前剔除的话,客户端就会减少很多不必要
的带宽消耗。而目前常用的邮件服务器postfix以及支持邮件服务器的相关分析软件都支持正则表达
式的比对功能。将来信的标题和内容与特殊字符串进行对比,发现问题邮件就过滤掉。
除邮件服务器之外.很多服务器软件都支持正则表达式。虽然这些软件都支持正则表达式,不
过字符串的对比规则还需要系统管理员来添加,所以作为系统管理员,正则表达式是必须掌握的技
能之一。

正则表达式的组成

普通字符串

大写字母A-Z

小写字母a-z

符号

元字符

正则表达式常见的选项

-n显示行号
-o显示匹配内容
-i不区分大小写
-vn取反

正则表达式常见的元字符

^起始内容
$结束内容
.匹配任意单个字符
[]匹配括号中的内容
[-]匹配括号里边内容的范围
{n}匹配范围的次数
{n1-n2}匹配开始和结束内容
[^]匹配括号之外的任意字符
\转义字符

grep的运用正则表达式

​ 查看起始内容为A和a的

​ [root@centos01 ~]# grep ‘^ [A|a]’ test.txt

在这里插入图片描述

​ 查看开头为w中间任意字符结尾是d的

​ [root@centos01 ~]# grep ‘w…d’ test.txt

在这里插入图片描述

转义符的使用,匹配范围的使用匹配次数的使用

​ [root@centos01 ~]# grep -n -E ‘[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’ test.txt

扩展正则表达式常见的选项

+重复一个或者一个以上的前一个字符
?显示当前字母前的一个字符
|或者,多出多个字符
()查找组字符串
()+多个重复的组

egrep扩展正则的使用

​ +的使用

​ [root@centos01 ~]# egrep ‘wo+d’ test.txt

在这里插入图片描述

​ ?的使用

​ [root@centos01 ~]# egrep ‘?dn’ test.txt

在这里插入图片描述

​ |的使用

​ [root@centos01 ~]# egrep ‘linux|Linux’ test.txt

在这里插入图片描述

​ ()的使用

​ [root@centos01 ~]# egrep ‘(w|A|a)’ test.txt

在这里插入图片描述

()+的使用

[root@centos01 ~]# egrep ‘A(xyz)+C’ test.txt

在这里插入图片描述

sed的使用

sed命令常见的选项

-n显示处理后的结果
-h显示帮助
-e指定使用脚本或者命令处理文本数据
-f指定脚本处理输入的文本数据
-i直接编辑文本文件

sed常见的操作符

a添加内容
d删除内容
p打印内容
s替换内容
y字符转换
c将指定行替换成指定内容

显示1-5行的数据

[root@centos01 ~]# sed -n ‘1,5p’ test.txt

在这里插入图片描述

删除第N行数据

[root@centos01 ~]# sed -i ‘1d’ test.txt

在这里插入图片描述

将大写改为小写

​ [root@centos01 ~]# sed -i ‘s/A/a/’ test.txt

在这里插入图片描述

删除空行

​ [root@centos01 ~]# cat test.txt

在这里插入图片描述

awk的使用

awk的变量

FS文本字段分隔符,可以使用空格作为占位符
NF处理行数
NR处理数据的行号
$0处理整行数据
$n处理数据行的第几列数据

显示第一列数据

[root@centos01 ~]# awk "{print $1}’ 1.txt

在这里插入图片描述

显示第一列和第二列数据

[root@centos01 ~]# awk '{print $1,$2}'1.txt

在这里插入图片描述

显示第一列和第二列数据使用–号分割

[root@centos01 ~]# awk ‘{print $1"----"$2}’ 1.txt

在这里插入图片描述

过滤/etc/passwd的第7列数据

[root@centos01 ~]# awk -F ‘:’ {‘print $7’} /etc/passwd | wc -l

在这里插入图片描述

实验

配置本地 YUM源,方便后期软件安装。
锁定关键的系统文件,如/etc/passwd、/etc/shadow、/etc/group,/etc/gshadow等文件。
清空/etc/ issue,去除系统及内核版本登录前的屏幕显示。
定时清理/var /spool/clientmqueue/目录下的垃圾文件.防止lnodes节点被占满。
关闭selinux并设置系统语言编码为utf—8.

#!/bin/bash
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
echo "" > /etc/issue
rm -rf /var/spool/clientmqueue/
sed -i 's/enforcing/disabled/g' /etc/selinux/config
sed -i 's/LANG="zh_CN\.UTF-8"/LANG="zh_CN\.UTF-8"/' /etc/locale.conf

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值