11.12 预习笔记 正则

正则

在这里插入图片描述

正则的定义

正则就是一串有规律的字符串,其中包括特殊字符。
掌握好正则对于编写shell脚本有很大的帮助。
各种编程语言中都有正则,原理是一样的

grep

在这里插入图片描述

格式: grep 【-cinvrABC】‘字符’ filename

-c 选项表示打印符合要求的行数
在这里插入图片描述
-n 选项表示输出符合要求的行以及行号
在这里插入图片描述
-i选项表示不区分大小写
在这里插入图片描述
-v 选项表示取反的意思,打印不符合要求的行
在这里插入图片描述
-r 表示遍历所有的子(及孙目录)目录
在这里插入图片描述
-A 选项后面跟数字,过滤出符合要求的行以及下面的n行
在这里插入图片描述
-B 选项后面跟数字,过滤出符合要求的行以及上面n行
在这里插入图片描述
-C 选项后面跟数字,同时过滤出符合要求的行以及上下各n行

在这里插入图片描述
‘【0-9】’ 列出包含所有数字的行

在这里插入图片描述

-v ‘^#’ -v ‘^$’ 列出过滤掉所有以#开头 和空行的行
在这里插入图片描述
??? grep ^[0-9] /etc/passwd 以0-9开头的行
扩展
[]内外^是有区别的
[^字符]表示列出除[]内字符之外的字符
在这里插入图片描述

.表示任意一个字符
在这里插入图片描述
*表示任意重复字符
在这里插入图片描述
在这里插入图片描述
.*表示零个或多个任意字符
在这里插入图片描述

{}内部为数字,表示前面的字符要重复的次数 字符后 数字后要加上转义字符\
{}还可以表示一个范围 x{a,b} 表示重复a到b次的字符 b还可为空 表示大于等于a次

  • 表示匹配一个或多个+前面的字符

?表示匹配零个或一个指定的字符

| 表示匹配字符串1或者字符串2

()表示()内为一个整体

扩展
egrep 后可不带转义符号 或者 grep -E

sed

在这里插入图片描述
grep命令还不够强大,它只能用于查找,而不能进行替换。这里就需要用到sed以及awk命令了,他们能把替换的文本输出到屏幕上,而且还有其他丰富的功能。它们都是流式编辑器。是针对文本的行来进行操作的。

sed 格式为 sed -n '/n/'p filename

1.打印某行
sed -n 'n’p filename
$尾 2,5 2至5行 5,$ 5至最尾行

在这里插入图片描述
2.打印包含特殊字符的行
sed -n '/root/'p mm.txt
在这里插入图片描述
sed也是支持. * 和+的 需要脱义前面加\的
在这里插入图片描述
如果不想脱义 前面加r
例如 sed -nr '/o+t/'p mm.txt
在这里插入图片描述
3.过滤字符串1或者字符串2(都匹配 会打印俩次 -e可多次使用)
sed -nr '/root|var/'p mm.txt
在这里插入图片描述
-e 也是或者的意思
在这里插入图片描述
4.不区分大小写
sed -n '/n/'IP mm.txt
在这里插入图片描述
5.删除某些行 (只删除打印 文件没修改)
sed '1,20’d mm.txt
在这里插入图片描述
删除所有字母 (其实就是个替换为空的过程)
在这里插入图片描述
6.-i 直接修改文件的内容

在这里插入图片描述
7.替换功能(会全部打印 )
sed ‘n1,n2s/x1/x2/g’ filename(n1,n2 不加 指全行)
正则表达式 不脱义前需加 -r
在这里插入图片描述
8.调换字符串的位置
格式为 sed -r ‘s/([:]+)?.*)?[:]+)/\3:\2:\1/’ //sed命令支持管道符,使用小括号把要替换的字符打包成一个整体。
.* 贪婪匹配 一直会匹配到最后
在这里插入图片描述
9.所有字符串前添加字符
sed -r ‘s/(.*)/aaa:&/’ mm.txt
&表示括号内的整体
在这里插入图片描述

awk

在这里插入图片描述
1.截取文档中的某段
打印头10行的第一段
head -10 mm.txt |awk -F ‘: ’ ‘{print $1}’ //-F用来指定分隔符。不加-F选项,默认使用空格或者tab为分隔符,print为打印的意思。 $1表示打印第1字段 $0表示整行
在这里插入图片描述
2.可以打印多段’{print $1,$2,$4}’
可自定义分隔符 ‘{print $1’’#’’$2’’#’’$4}’ 自定义分隔符用双引号 引起
在这里插入图片描述
3.匹配字符或字符串
awk ‘/oo/’ mm.txt
awk -F ‘:’ '$1 ~ /oo/'mm.txt 匹配 第一段oo字符的行打印出来
在这里插入图片描述
支持正则表达式 第一段一个或者一个以上的o的行

在这里插入图片描述
扩展 awk 不需要脱义字符

  1. awk -F ‘:’ ‘$3==0’ test.txt //这里表示打印第3段等于0的行,要想等于必须使用2个=,不然就是赋值了。
    在这里插入图片描述

    == 等于 >大于>=大等于
    < 小于
    <= 小等于
    != 不等于

awk -F ‘:’ ‘$3==$4’ mm.txt 打印第三段和第四段相同的行

5.awk的内置变量
OFS 定义输出分隔符的
在这里插入图片描述
NR 表示行号
在这里插入图片描述
NF 表示用分隔符分隔后一共多少段
在这里插入图片描述
NR 作为判断条件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值