一、文本编辑
1、匹配内容
正则表达式匹配的是文本内容,linux的文本三剑客都是针对文本内容
2、文本三剑客
grep 过滤文本内容、sed 针对文本内容进行增删改查、awk 按行取列
文本三剑客都是按照行进行匹配
3、grep选项
作用:使用正则表达式来匹配文本内容
命令操作:grep 选项 文本/路径
选项 | 作用 |
---|---|
-m 数字 | 按行匹配 |
-m | 匹配几次之后停止 |
-v | 取反 |
-n | 显示匹配的行号 |
-c | 只显示匹配的行数 |
-o | 仅显示匹配的结果 |
-q | (静默模式)不输出任何信息 |
-A(after) 数字 | 匹配数字行号后几行 |
-B(before) 数字 | 匹配数字行号前几行 |
-C 数字 | 匹配数字行号前后各几行 |
-e | 或者 |
-E | 匹配扩展正则表达式 |
-f | 匹配两个文件相同内容,以第一个文件为准 |
-r | 递归目录 目录下的文件内容。软连接不包含在内 |
-R | 递归目录 目录下的文件内容,包含软连接 |
操作命令 grep -f 文件1 文件2
4、sort排序
作用:以行为单位,对文件内容进行排序
命令操作:sort 选项 参数
cat file | sort 选项
选项 | 作用 |
---|---|
-f | 忽略大小写,默认把数字往前排,大写字母放在后面 |
-b | 忽略每行之前的空格(不是删除空格,只是依旧按照数字和字母的顺序排列) |
-n | 按照数字进行排序(字母和数字,字母在前,数字在后) |
-r | 反向排序 |
-rn | 完全按照数字取倒序 |
-u | -u 相同数据仅显示一行 去重 |
-o | 将排序后结果转存到指定文件 |
5、uniq
作用:去除连续重复的,只显示一行
选项 | 参数 |
---|---|
-c | 统计连续重复行的次数,合并连续重复的行 |
-u | 显示仅出现一次的行(包括不是连续出现的重复行) |
-d | 仅显示连续重复的行(不包括非连续出现的内容) |
6、tr
tr 选项 参数
选项 | 参数 |
---|---|
-c | 保留字符集1的字符,其他字符用字符集2来进行替换 |
-d | 删除字符集中的一部分 |
-s | 把字符集1的部分替换成字符集2的部分;把连续重复出现的字符串压缩成一个字符串 |
7、cut
cut 快速裁剪 与awk类似 都可按行取列
作用:对字段进行截取和裁剪
选项 | 参数 |
---|---|
-d | 指定分隔符 (默认的分隔符是tab键) |
-f | 对字段进行截取,指定输出段的内容 |
-complement | 输出内容排除指定字段 |
-output-delimiter | 更改输出内容的分隔符,指定改变分隔符= |
-b | 以字节为单位进行截取 |
-c | 以字符为单位进行截取 |
8、split文件的拆分
split
大文件拆分成若干小的文件
-l
按行来进行分割
-b
按照大小来进行分割
拓展题:现在有一个日志文件,很大,5G,第一个能不能快速的打开?
答: 拆分:-l 按行 -b 大小。这种文件推荐使用按大小
9、cat、paste文件合并
cat、paste
拓展题:1、cat合并和paste合并之间的区别
答:cat是上下合并,paste是左右合并
2、统计当前主机的连接状态
答:netstat -antp、ss -antp
ss -antp | grep -v '^State' | cut -d " " -f 1 | sort | uniq -c
二、正则表达式
(一)概念
1、概念:由特殊字符以及文本字符所编写的一个模式,这些模式用来匹配文件当中的内容(字符)。
2、作用:校验我们输入的内容是否符合规定、格式、长度等等要求
主要用来匹配文本内容,命令的结果
3、通配符:只能用于匹配文件名和目录名,不能匹配文件内容
(二)正则表达式
1、基本正则表达式
1.1 元字符(字符匹配)
.
:任意单个字符,也可以是一个汉字
\
:转义符 恢复其本意 (加引号 如"\ .")
[]
:匹配指定范围内的任意单个字符或者数字
[^]
:取反 ^
在[]
内表示去反,^
在[]
外表示以什么为开头
^#
:匹配以#
开头的行
^$
:匹配空行
1.2 次数匹配
表示此时,匹配字符出现的次数
*
:匹配前面的字符任意次,0也可以。贪婪模式,尽可能的匹配
.*
:匹配前面任意字符,至少要有一次,匹配所有
\?
:匹配前面的字符0次或者1次,可有可无的意思
\+
:匹配前面的字符,至少要出现一次>=1
\{n\}
:匹配前面的字符=n次,可以小于n,不能大于n,而且前面的字符必须要连续出现
\{m,n\}
:匹配前面的字符至少m次,至多n次,需要连续出现,超出的不在匹配范围
\{,n\}
:匹配前面的字符最多n次,不能少于n次,但是可以超过n次,需要连续出现
\{n,\}
:匹配前面的字符最少n次
1.3 位置锚定
^
:以什么开头,行首锚定
$
:以什么结尾,行尾锚定
\<
或者\b
:词首锚定 匹配单词的左侧(连续的数字,字母,下划线都算单词内部) 参数\b
,完整
\>
或者\b
:词尾锚定 用于匹配单词的右侧 \b 参数
区别
\broot\b
匹配这个单词,空格隔开也可以
^root$
:匹配整行,空格隔开不可以
1.4 分组和逻辑关系
分组:()
或者:\|
(三)扩展正则表达式
egrep和grep -E:支持扩展正则表达式,不需要转义符\
扩展正则表达式和基本正则表达式规则一样,扩展正则表达式不需要转义符\
,除了位置锚定中的词首锚定和词尾锚定需要有转义符\
,别的在使用规则的时候可以去掉转义符使用。
()分组 | 或者