Shell(四)

                              Shell(四)

一.正则表达式
1.正则表达式的作用和类型
(1)正则表达式的作用
过滤指定文件内容
(2)正则表达式类型
基础正则表达式
扩展正则表达式
2、基础正则表达式元字符类型
(1)^ 匹配指定开始内容
(2)$ 匹配指定结尾内容
(3). 匹配任意单个字符
(4)[] 匹配括号内字符
(5)* 通配符匹配所有字符
(6)[^] 匹配方括号指定开始字符
(7)[n1-n2]匹配指定开始和结束内容
(8){n} 匹配多次
(9){n,} 匹配一次
(10){n,m}匹配最低次数和最高次数
(11)\ 转义字符
3、基础正则表达式的使用
(准备一个名为test.txt的测试文件)
(1)查找特定字符(‘-n表示显示行号’‘-i表示不区分大小写’)
[root@centos ~]# grep -n ‘the’ test.txt
在这里插入图片描述
[root@centos ~]# grep -in ‘the’ test.txt
在这里插入图片描述

若反向选择,查找不包含‘the’字符的行,则需要通过‘-n’实现
[root@centos ~]# grep -vn ‘the’ test.txt
在这里插入图片描述

(2)用[]来查找字符([io]表示匹配‘i’‘o’)
[root@centos ~]# grep -n ‘sh[io]rt’ test.txt
在这里插入图片描述

查找重复字符“oo”
[root@centos ~]# grep -n ‘oo’ test.txt
在这里插入图片描述
查找oo前面不是“w”的字符串,通过反向选择“[^]”实现
(其中w开头匹配的原因:‘oo’前面的‘o’是符合匹配规则的)
[root@centos ~]# grep -n ‘[^w]oo’ test.txt
在这里插入图片描述

“oo”前面不存在小写字母
[root@centos ~]# grep -n ‘[^a-z]oo’ test.txt (大写通过‘A-Z’)
在这里插入图片描述
查找包含数字的行
[root@centos ~]# grep -n ‘[0-9]’ test.txt
在这里插入图片描述
(3)查找以‘the’为行首的行
[root@centos ~]# grep -n ‘^the’ test.txt
在这里插入图片描述

查询以小写字母开头的行
[root@centos ~]# grep -n ‘1’ test.txt
在这里插入图片描述
查询以大写字母为开头的行
[root@centos ~]# grep -n ‘2’ test.txt
在这里插入图片描述
查询不以字母为开头的行
[root@centos ~]# grep -n ‘[a-zA-Z]’ test.txt
在这里插入图片描述
^在[]内外的作用不一样,在[]里表示反向选择,在[]外表示定位行首。
查找‘w??d’的字符
[root@centos ~]# grep -n ‘w…d’ test.txt
在这里插入图片描述

查询至少两个以上oo
[root@centos ~]# grep -n ‘ooo*’ test.txt
在这里插入图片描述

(4)显示行号和匹配关键字符
[root@centos ~]# grep -n ‘home’ test.txt
在这里插入图片描述

(5)显示行号过滤指定开始的字符
[root@centos ~]# grep -n ‘^the’ test.txt
在这里插入图片描述

(6)匹配任意单个字符显示行号
[root@centos ~]# grep -n ‘wo…’ test.txt
在这里插入图片描述

(7)匹配指定字符内容
[root@centos ~]# grep -o ‘bet’ test.txt
在这里插入图片描述
(8)转义字符使用过滤IP地址
[root@centos ~]# grep -n -E “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}” test.txt
在这里插入图片描述
4、扩展正则表达式元字符
(1)+
重复一个或者多个前一个字符
(2)?
显示当前字符前边字符
(3)|
或者找出多个字符
(4)()
查找组字符
(5)()+
查找重复组字符
5.扩展正则表达式的应用
(1)查找重复字符
[root@centos ~]# egrep -n ‘wo+d’ test.txt
在这里插入图片描述

(2)匹配任意前一个字符串
[root@centos ~]# egrep -n ‘?will’ test.txt
在这里插入图片描述

(3)使用或者查找字符
[root@centos ~]# egrep -n ‘the|The’ test.txt
在这里插入图片描述

(4)查找组字符
[root@centos ~]# egrep -n ‘(the|The|o)’ test.txt
在这里插入图片描述
6、基础正则表达式和扩展正则表达式区别
(1)基础正则表达式
使用grep或者sed过滤修改配置文件
(2)扩展正则表达式
使用egrep和awk过滤数据
二.sed和awk
1、sed作用和工作流程
(1)sed的作用
文本文件解释工具
支持读取、修改、显示配置文件
(2)sed工作流程
读取:从文件、输入、管道符命令读取数据
执行:使用sed命令采用无交互模式修改配置文件
显示:将修改后的配置文件显示用
2、sed常见的选项和操作
(1)sed常见选项
-n:显示处理结果
-h:显示帮助
-e:使用脚本或者命令处理数据
-f:使用脚本处理文本数据
-i:直接编辑文本
(2)常见的操作
a:添加数据
d:删除
s:替换
p:查看
y:字符转换
c:将指定行替换指定内容
3.sed基本应用
(1)查询符合条件的文本
查询所有内容
[root@centos ~]# sed -n ‘p’ test.txt
在这里插入图片描述

查询地三行
[root@centos ~]# sed -n ‘3p’ test.txt
在这里插入图片描述

查询3-5行
[root@centos ~]# sed -n ‘3,5p’ test.txt
在这里插入图片描述

查询所有奇数行(n表示下一行)
[root@centos ~]# sed -n ‘p;n’ test.txt
在这里插入图片描述
查询所有偶数行(n表示下一行)
[root@centos ~]# sed -n ‘n;p’ test.txt
在这里插入图片描述
查询1-5行之间的奇数行
[root@centos ~]# sed -n ‘1,5{p;n}’ test.txt
在这里插入图片描述

查询第十行到末尾的偶数行
[root@centos ~]# sed -n ‘10,${n;p}’ test.txt
在这里插入图片描述

查询包含the的行
[root@centos ~]# sed -n ‘/the/p’ test.txt
在这里插入图片描述
查询从第四行到第一个包含the的行
[root@centos ~]# sed -n ‘4,/the/p’ test.txt
在这里插入图片描述

查询包含the的行所在的行号,=用来查询行号
[root@centos ~]# sed -n ‘/the/=’ test.txt
在这里插入图片描述
查询以PI开头的行
[root@centos ~]# sed -n ‘/^PI/p’ test.txt
在这里插入图片描述

查询包含单词wood的行,<,>代表单词边界
[root@centos ~]# sed -n ‘/<wood>/p’ test.txt
在这里插入图片描述

(2)删除符合条件的文本
删除第三行
[root@centos ~]# sed ‘1d’ test.txt
在这里插入图片描述
删除以小写字母开头的行
[root@centos ~]# sed ‘/3/d’ test.txt
在这里插入图片描述
(3)替换符合条件的文本
替换数据将yun替换为YUN
[root@centos ~]# sed -i ‘s/yun/YUN/’ test.txt
在这里插入图片描述

在IP地址前边添加注释行
[root@centos ~]# sed -i ‘/192/s//#/’ test.txt
在这里插入图片描述
将第一行和第三行数据迁移到17行后面
[root@centos ~]# sed -i ‘1,3{H;d};17G’ test.txt
在这里插入图片描述
4、awk的作用和变量
(1)awk的作用
逐行读取并显示指定内容
(2)awk的变量类型
FS:文本字段分隔符,可以使用空格
NF:处理行数
NR:处理行号
$0:处理整行数据
$n:处理数据列编号
5、awk的应用
(1)显示文件内容
[root@centos ~]# awk ‘{print}’ test.txt
在这里插入图片描述
(2)查看第一列和第二列数据
[root@centos ~]# awk ‘{print $1,$2}’ test.txt
在这里插入图片描述
(3)第一列和第二列数据使用#号作为分隔符
[root@centos ~]# awk ‘{print $1"#####"$2}’ test.txt
在这里插入图片描述
(4)实现第一列数据
[root@centos ~]# awk ‘{print $1}’ test.txt
在这里插入图片描述
(5)查看第一行和第二行
[root@centos ~]# awk ‘NR1,NR2{print}’ test.txt
在这里插入图片描述

(6)显示第七列数据
[root@centos ~]# awk -F :{‘print $7’} test.txt
在这里插入图片描述


  1. a-z ↩︎

  2. A-Z ↩︎

  3. a-z ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值