目录
一、正则表达式
1.含义
正则表达式,又称为规则表达式。在代码中常简写为redex、regexp或RE,计算机科学的一个概念。正则表达式通常用来检索、替换那些符合某个模式(规则)的文本。
正则表达式不只有一种,而且Linux中不同的程序可能会使用不同的正则表达式,如:
工具:grep sed awk egrep
2.定义
- 正则表达式,又称正规表达式、常规表达式
- 使用字符串来描述、匹配一系列符合某个规则的字符串
- 正则表达式组成:普通字符(大小写字母、数字、标点符号及一些其他符号); 元字符(在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。)
3.作用
正则表达式---通常用于判断语句中,用来检查某一字符串是否满足某一格式
4.grep
grep [选项] 查找条件 目标文件
选项 | 功能 |
-E | 开启拓展的正则表达式 |
-c | 计算找到 '搜寻字符串' 的次数 |
-i | 忽略大小写的不同,所以大小写视为相同 |
-o | 只显示被模式匹配到的字符串 |
-v | 反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行! (反向查找,输出与查找条件不相符的行) --color=auto:可以将找到的关键词部分加上颜色的显示 |
-n | 输出行号 |
案例
[root@localhost ~]# grep -c root /etc/passwd
//统计root字符总行数;或cat /etc/passwd | grep root
[root@localhost ~]# grep -i "the" ceshi.txt
//不区分大小写查找the所有的行
[root@localhost ~]# grep -v root /etc/passwd
//将/etc/passwd中没有出现root的行显示出来
[root@localhost ~]# cat ceshi.txt | grep -v '^$' > new.txt
//将非空行写入到new.txt文件中
[root@localhost ~]# ifconfig ens33 | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" | head -1
//过滤出IP
二、基础正则表达式(BRE)
1.定义
基础正则表达式是常用的正则表达式部分。
2.常见元字符
- \:转义字符,\!、\n等
- ^:匹配字符串开始的位置(^a、^the、^#)
- $:匹配字符串结束的位置(word$)
- .:匹配除\n之外的任意的一个字符(go.d、g..d)
- *:匹配前面子表达式0次或者多次(doo*d、go.*d)
- [list]:匹配list列表中的一个字符(go[ola]d、[abc]、[a-z]、[a-z0-9])
- [^list]:匹配任意不在list列表中的一个字符([^a-z]、[^0-9]、[^A-Z0-9])
- \{n,m\}:匹配前面的子表达式n到m次,有\{n\}、\{n,\}、\{n,m\}三种格式(go\{2\}d、go\{2,3\}d、go\{2,\}d)
注意 egrep, awk使用{n}、{n,}、{n,m}匹配时“{}"前不用加“\”
egrep -E -n 'wo{2}d' test.txt -E用于显示文件中符合条件的字符
egrep -E -n 'wo{2,3}d' test.txt
三、扩展正则表达式(ERE)
1.定义
扩展正则表达式是对基础正则表达式的扩充深化。
2.扩展元字符
选项 | 功能 |
+ | 匹配前面子表达式1次以上 例:go+d,将匹配至少一个o |
? | 匹配前面子表达式0次或者1次 例:go?d,将匹配gd或god |
() | 将括号中的字符串作为一个整体 例:(xyz)+,将匹配xyz整体1次以上,如xyzxyz |
| | 以或的方式匹配字条穿 例:good|food,将匹配good或者food;g(oo|la)d,将匹配good或者glad |
四、文件处理器
1.cut(列截取工具)
使用说明
cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不能指定File参数,cut命令将读取标准输入。必须指定-b、-c、或 -f标志之一。
选项及其功能
选项 | 功能 |
-b | 按字节截取 |
-c | 按字符截取,常用于中文 |
-d | 指定以什么为分隔符截取,默认为制表符 |
-f | 通常和-d一起 |
案例
[root@localhost ~]# cat /etc/passwd | cut -d ':' -f 1
[root@localhost ~]# cat /etc/passwd | cut -d ':' -f 3
[root@localhost ~]# cat /etc/passwd | cut -d ':' -f1,3
[root@localhost ~]# who | cut -b 4
[root@localhost ~]# who | cut -b 1
2.sort
是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符。
语法
sort [选项] 参数
选项 | 功能 |
-t | 指定分隔符,默认使用[Tab]键或空格分隔 |
-k | 指定排序区域,哪个区间排序 |
-n | 按照数字进行排序,默认是以文字形式排序 |
-u | 等同于uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功 |
-r | 反向排序,默认是升序,-r就是降序 |
-o | 将排序后的结果转存至指定文件 |
案例
[root@localhost ~]# sort ceshi.txt
不加任何选项默认按第一列升序,字母的话就是从a到z依次排列。
[root@localhost opt]# sort -n -t: -k3 /etc/passwd
以冒号为分隔符,以数字大小对第三列对第三列排序(升序)
[root@localhost opt]# sort -nr -t: -k3 /etc/passwd
以冒号为分隔符,以数字大小对第三列对第三列排序(降序)
3.uniq
主要用于去除连续的重复行。
注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重。
选项 | 功能 |
-c | 对重复的行进行计数 |
-d | 仅显示重复行 |
-u | 仅显示出现一次的行 |
[root@localhost ~]# cat 4.txt | sort | uniq -c
先排序,再对重复行进行排序
[root@localhost ~]# cat 4.txt | sort | uniq -d
仅显示重复的行
[root@localhost ~]# cat 4.txt | sort | uniq -u
仅显示不重复的行
[root@localhost ~]# cat 4.txt | sort | uniq
去掉重复的部分
4.tr
- 它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
- 从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
格式:tr [选项]… SET1 [SET2]
常用选项
选项 | 功能 |
-d | 删除字符 |
-s | 删除所有重复出现的字符,只保留第一个 |
案例
[root@localhost ~]# cat 4.txt | tr 'a-z' 'A-Z'
将文本内容中所有小写字母改为大写
[root@localhost ~]# cat 4.txt | tr 'cat' 'CAT'
一一替换 c对应C a对应A t对应T
[root@localhost ~]# cat 4.txt | tr -d 'd'
删除所有d
[root@localhost ~]# cat 4.txt | tr -d 'dog'
删除所有d,o,g这三个字母
[root@localhost ~]# cat 4.txt | tr -d '\n'
删除换行