Shell脚本正则表达式

一.正则表达式

1.基础正则表达式元字符类型
1)^ :匹配指定开始内容
2)$ :匹配指定结尾内容
3). :匹配任意单个字符
4)[] :匹配括号内字符
5)* :通配符匹配所有
6)[^] :匹配方括号指定开始的字符
7)[n1-n2] :匹配指定开始和结束的内容
8){n} :匹配多次
9){n,} :匹配一次
10){n,m} :匹配最多次和最低次
11)\ :转义字符

2.正则表达式的使用案例
1.首先准备test.xt文件
1)显示行号和匹配关键字符:grep -n ‘home’ test.txt
在这里插入图片描述
2)显示行号过滤指定开始字符:grep -n ‘^the’ test.txt
在这里插入图片描述
3)匹配任意单个字符显示行号:grep -n “oo…” test.txt
在这里插入图片描述
4)匹配方括号里的字符:grep -n ‘sh[io]rt’ test.txt
在这里插入图片描述
5)匹配指定字符内容:grep -o ‘bet’ test.txt在这里插入图片描述
6)转义字符过滤IP地址:grep -n -E “[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}” test.txt
首先在test.txt文件里添加一条ip地址
在这里插入图片描述

二.扩展正则表达式
1.扩展正则表达式元字符
1)+ :重复一个或者多个前一个字符
2) ? :显示当前字符前边字符
3) | :或者。找出多个字符
4) () :查找组字符
5) ()+ :查找重复组字符
2.扩展正则表达式的应用案例
1)查找重复字符:egrep -n ‘wo+d’ test.txt
在这里插入图片描述
2)匹配任意前一个字符串:egrep -n ‘?blue’ test.txt 在这里插入图片描述
3)使用或者查找字符:egrep -n ‘the|The’ test.txt
在这里插入图片描述
4)查找组字符:egrep -n ‘(the|The|o)’ test.txt 在这里插入图片描述

三.sed和awk

1.sed常见的选项和操作
1)sed常见的选项
-n:显示处理结果
-h:显示帮助
-e:使用脚本或者命令处理数据
-f:使用脚本处理文本数据
-i:直接编辑文本
2)常见的的操作
a:添加数据
d:删除数据
s:替换数据
p:查看
y:字符转换
c:将指定行换指定内容
2.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)替换数据将yum替换为YUM(在test.txt添加个yum):sed -i ‘s/yum/YUM’ test.txt (cat test.txt查看是否替换成功)
在这里插入图片描述
在这里插入图片描述
5)在ip地址前边添加注释:sed -i ‘/^192/s/ ^/#/’ test.txt(cat test.txt查看是否添加成功)
在这里插入图片描述
6)将第一到三行数据迁移到20行后边:sed -i ‘1,3{H;d};20G’ test.txt(cat test.txt查看是否替换成功)
在这里插入图片描述
在这里插入图片描述
3.awk的变量类型
1)FS:文本字段分隔符,可以使用空格
2)NF:处理行数
3)NR:处理行号
4)$0:处理整行数据
5) $n:处理数据列编号
4.awk的应用案例
1)显示全部内容:awk ‘{print}’ test.txt 在这里插入图片描述

2)实现第一列数据:awk ‘{print $1}’ test.txt
在这里插入图片描述
3)查看第一列和第二列数据:awk ‘{print $1,$2}’ test.txt
在这里插入图片描述
4)查看第一列和第二列数据使用“–”号作为分隔符:awk ‘{print $1 “–”$2}’ test.txt
在这里插入图片描述
5)查看第一行和第行:awk ‘NR1,NR2{print}’ test.txt
在这里插入图片描述
6)显示/etc/passwd第七列数据: awk -F : {‘print $7’} /etc/passwd
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值