第三阶段基础
时 间:2023年7月11日
参加人:全班人员
内 容:
正则表达式与“三贱客”
目录
shell脚本的基本应用:
一、正则表达式与grep
2)正则表达式的组成
1)正则表达式grep常见的选项
2)正则表达式的元字符
4、扩展正则表达式
二、sed的使用 二哥————————sed
1)sed的作用
2)sed的作用流程
1)sed命令选项
2)sed的操作符号
3、sed的基本应用
三、awk的使用 三弟————————awk
1、awk的作用
2、awk的变量
3、awk的基本应用
shell脚本的基本应用:
一、正则表达式与grep
1、正则表达式的作用正则表达式的组成
1)正则表达式的作用
针对文件或者文本内容进行处理;
帮助用户快速查找文本文件内容。
2)正则表达式的组成
普通字符
大写A-Z
小写a-z
符号
元字符
2、正则表达式的常见选项和正则表达式常见的元字符
1)正则表达式grep常见的选项
-n:显示行号
-o:只显示匹配内容
-i:不区分大写或者小写字母
-v:取反
-E:支持扩展
-q:静默执行
-w: 识别为单词
-c: 统计匹配的行数
2)正则表达式的元字符
^:匹配行起始内容
$:匹配行结束内容
.:匹配任意单字符
.*:匹配任意字符
[]:匹配括号里边的内容
[-]:匹配括号里边内容的范围
{n}:匹配的范围的次数
[n1-n2]:匹配开始和结束内容
{ n,m }:重复前面的一个字符n到m次
{ n, }:重复前面的一个字符至少n次
[^]:匹配括号之外的任意字符
\:转义字符
\<: 固定词首
\>: 固定词尾
3、正则表达式的基本应用(grep——————三贱客之一)
1)过滤关键字是the显示出来
grep -n 'the' test.txt
2)查看行开始是the显示出来
grep -n '^the' test.txt
3)匹配任意单个字符
grep -n 'w.d' test.txt
4)只显示匹配的内容
grep -o 'wod' test.txt
5)通配符应用匹配开始是w结束是d中间的任意字符
grep -n 'w*d' test.txt
6)匹配括号里边的内容(括号内表示“或”)
grep -n 'sh[io]rt' test.txt
7)转移字符的基本应用,过滤IP地址信息
grep -n -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" test.txt
等同于
egrep -n "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" test.txt
4、扩展正则表达式
1)扩展正则表示常见的元字符
+:重复一次或者多次前面字符显示出来
?:显示当前字母前一个字符
|:或者,显示多个字符
():查找组字符串
()+:辨别多个重复组
2)扩展正则表达式的应用
egrep -n 'wo+d' test.txt | 将重复o的内容显示出来 |
egrep -n '?d' test.txt | 将d前边内容显示出来 |
egrep -n 'The|the' test.txt | 将匹配的The或者the显示出来 |
egrep -n '(h|o|r)' test.txt | 将包含h、o、r的字符所在行内容显示出来 |
egrep -n 's(hor)t' test.txt | 将开头s结束t中间连续是hor的单词显示出来 |
根据上图测试:
egrep -n 'wo+d' test.txt
egrep -n '?d' test.txt
egrep -n 'The|the' test.txt
egrep -n '(h|o|r)' test.txt
egrep -n 's(hor)t' test.txt
二、sed的使用 二哥————————sed
1、sed的作用和sed的工作流程
1)sed的作用
sed是一个文本文件解析转换工具
用于读取、修改、显示数据
2)sed的作用流程
读取数据:从文件、输入、管道命令中读取数据,临时存储数据
执行:根据sed命令在模式操作空间中进行无交互修改数据
显示:将文本文件的修改结果进行打印显示
2、sed命令常见的选项和操作符
1)sed命令选项
-n:显示处理后的结果
-h:显示帮助
-e:指定命令或者脚本处理输入的文本文件
-f:指定脚本处理输入的文本文件
-i:直接编辑文本文件
2)sed的操作符号
a:添加内容
d:删除内容
p:打印内容
s:替换内容
y:字符转换
c:将特定行替换成指定的内容
3、sed的基本应用
1)显示1到5行数据
sed -n '1,5p' test.txt
2)显示奇数行
sed -n -e '1p;3p;5p' test.txt
3)删除第一行数据
sed '1d' test.txt
4)删除空行
sed -i '/^$/d' a.sh
删除注释
sed -i ‘/^#/d’ a.sh
5)将大写THE修改为小写the
sed -i 's/the/The/' test.txt
6)He关键字添加注释
sed -i '/^ip/s/^/#/' test.txt
7)迁移字符将1~5行迁移到15行后
sed -i '1,3{H;d};8G' test.txt
8)输出只显示ip信息之sed用法
ifconfig ens33 | sed –n ‘2 s/.*inet //p’ | sed ‘s/n.*//’
ifconfig ens33 |sed -nr '2 s/.*et (.*) n.*/\1/gp'
三、awk的使用 三弟————————awk
1、awk的作用
过滤和读取数据使用
2、awk的变量
(-F)
FS:文本字段的分隔符,可以使用空格为占位符
NF:处理行数
NR:处理数据的行号
$0:处理数据的整行数据
$n:处理数据行的第几列数据
3、awk的基本应用
1)显示所有内容
awk '{print}' 1.txt
2)显示第一列数据
awk '{print $1}' 1.txt
3)在第一列和第二列之间添加--
awk '{print $1"--"$2}' 1.txt
4)显示第一行和第二行数据
awk 'NR==1,NR==2{print}' 1.txt
拓展:
1、对历史命令进行排序和查重,统计
例:history
history | sort
history | sort –nr 排序 r是逆序
history | awk '{print $2}'
sort | uniq –c 去重,统计出现次数
history | awk '{print $2}' | sort |uniq -c |sort -nr |head -5
从大到小统计历史使用命令的次数并显示出现最高次数的前五个
history | awk '{print $2}' | sort |uniq -c |sort -nr |sed -n '1,5p'
history | awk '{print $2}' | sort |uniq -c |sort -nr |awk 'NR<=5{print}'
cat www.new1019.xianqujingpinwang.log| sed -n '/23\/Nov\/2022:0/,/23\/Nov\/2022:12/p'|grep `date "+%d/%b"`|awk '{print $1}'|sort |uniq -c |sort -rn|wc -l
查看访问当前网站的日志文件,并筛选出在12小时内出现频率次数最高的ip地址,以防此ip地址是恶意攻击ip
上述实验可以用我们apache实验代替验证!
cat /var/log/httpd/access_log |awk '{print $1}'
cat access_log |awk '{print $1}' |sort|uniq -c |sort -nr |wc -l
可以统计出,在当前时间内,只有一个IP地址对我们httpd进行了访问