正则表达式与“三贱客”

第三阶段基础

时  间: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进行了访问

猜你喜欢

转载自blog.csdn.net/2302_77582029/article/details/131690879