匹配文件内容。根据特定的字符和表达式。
linux下 最好的就是grep 还可以:sed awk
nginx mysql 配置文件也可以支持正则表达式
通配符和正则表达式的区别:
通配符匹配的是文件名:
*:匹配任意一个或者多个字符
?:匹配任意一个字符
【】:可以是范围匹配,也可以是单个字符】0-9是单个,123456也是单个
正则表达式:在grep里用””或者‘’起来就是正则表达式
元字符:
点(.):匹配任意单个字符,可以是一个汉字
转义符(\):转变原来的意思
():分组,想要表达括号\(\)
[ ]:匹配任意范围内的单个字符
^:取反 例子:[^a.z]
[[:blank:]] 匹配空格或者制表符(tab键)
[ ] 只能匹配空格键
[:space:] 空格tab键 换行符 回车 各种类型的空白
[:cntrl:]:退格 删除
正则表达式:
对文本内容进行过滤,查找,匹配完整的大小写
元字符:
. 任意单个字符
转义符 \
()分组\\)
[] 匹配范围值内的任意单个字符
基本正则表达式:
表示次数:
*:匹配前面的字符任意次,包括0次尽可能长
.*:匹配前面的字符任意次,但是不包括0次,也就是匹配所有
\?: 匹配前面的字符出现0次,或者1次,有且只有一次
\+ 表示匹配前面的出现的字符,至少出现一次,也就是>=1
\{n\} 匹配前面出现的字符等于几次 (n是数字)
\{m,n\}:匹配前面出现的字符最少m次,最多n次
\{,n\} 匹配前面的字符最多n次,没有也算
\{n,\}匹配前面的字符最少n次,只要连续出现n次后面的都算
通配符:
匹配的是文件名,而且不能精确的匹配大小写。
位置锚定:
^ 行首锚定,以什么为开头
$ 行尾锚定,以什么为结尾
^root$ 匹配行模式 单独的一行只有root
^$ 空白行 也是空白行
\<或者\b 词首锚定 用于匹配单词模式的左侧
从左往右全部都算,所有一起都包含,所有算匹配到
\>或者\b 词尾锚定 用于匹配单词模式的右侧
只匹配右侧的单词,左侧的单词不匹配
\broot\b 匹配整个单词
\<root\>
分组以及逻辑或
() \|
grep -E 或者egrep扩展正则表达式
和基础正则表达式一样,就是没有\
sed 编辑器:
文本三节课:grep过滤文件内容 主要是查
sed是行编辑器 按行来的
sed是按行来处理的,是一种流编辑器
每一次处理内容,只有确认才会生效,不确认的,只是把模式空间的临时数据展示给用户看,然后删除
按照文本的行,一行一行向下处理,直到文件的最后一行
默认情况下:sed都是在模式空间执行,因此源文件不会发生变化
sed 的操作格式:
sed -e “操作” 文件1 文件2
sed -e “操作1;操作2”文件
-e 指定的命令来处理输入的文本文件,只有一个操作,-e 可以省略,多个指令才会用-e
-f 表示用特定的脚本文件来处理输入的文件
-i 即时生效,就是确认
-n 仅显示script 处理后的结果
sed -i 立刻生效 慎用
sed的操作符:
p:打印
d:删除
= 只打印行号
打印
sed -e ‘p’ test.txt
sed自己还有一个默认输出,再加上p打印,就有两行
-n就禁止了默认输出
sed -n’p’ test.txt
输出指定行的行内容,其他的都没有
sed-n’=’test.txt
=号,只显示行号
既显示行号,又显示内容
文本模式:
文本内容----sed的过滤
把要过滤的内容用//扩起来
以……为开头的加个^
从第四行开始,到有bash 的所有
sed 使用扩展正则表达式:
sed -r 使用扩展正则
,
以什么开头^… 以什么结尾…$
sed 的格式 sed -rn ’/过滤的条件/p’
sed 的格式 sed -rn ’/(什么东西){出现的次数}/p’
i 免交互 d 就是删除的意思