一、正则表达式
1.概述
由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表表控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。
2.基本正则表达式
2.1 元字符(字符匹配)
| 匹配符 | 解释 |
|---|
| . | 匹配任意单个字符 |
| [] | 匹配指定范围内的任意单个字符,如[ac] [0-9] [a-zA-Z] |
| [^] | 匹配指定范围外的任意单个字符,如[^ac] |
| \w | 匹配单词构成部分 |
| \W | 匹配非单词构成部分 |
| \s | 匹配任何空白字符,包括空格、制表符、换页符等 |
| \S | 匹配任何非空白字符 |
2.2 表示匹配次数
| 匹配符 | 解释 |
|---|
| * | 匹配前面的字符任意次,包括0次 |
| .* | 匹配任意长度的字符,不包括0次 |
| \? | 匹配前面的字符出现0次或1次 |
| \+ | 匹配前面的字符出现最少1次 |
| \{n\} | 匹配前面的字符n次 |
| \{m,n\} | 匹配前面的字符至少m次,至多n次 |
| \{,n\} | 匹配前面的字符至多n次 |
| \{n,\} | 匹配前面的字符至少n次 |
2.3 位置锚定
| 匹配符 | 解释 |
|---|
| ^ | 行首锚定 |
| $ | 行尾锚定 |
| ^word$ | 匹配内容只有"word"的行 |
| ^$ | 匹配空行 |
| ^[[:space:]]*$ | 匹配空白行 |
| \< | 词首锚定 |
| \b |
| \> | 词尾锚定 |
| \b |
| \<word\> | 匹配"word"整个单词 |
| \bword\b |
3.扩展正则表达式
| 匹配符 | 解释 |
|---|
| * | 匹配前面的字符0次或者多次 |
| .* | 任意长度的任意字符 |
| ? | 匹配前面的字符0次或1次 |
| + | 匹配前面的字符至少1次 |
| {n,m} | 匹配前面的字符n到m次 |
| {m} | 匹配前面的字符m次 |
| {n,} | 匹配前面的字符至少n次 |
| {,n} | 匹配前面的字符至多n次 |
| | | 逻辑或 |
| () | 分组:将多个字符捆绑在一起,当作一个整体处理 |
二、文本处理器
1. sort 命令 - 对文本文件进行排序,默认以字母排序
| 常用选项 | 解释 |
|---|
| -b | 忽略行首空白字符 |
| -r | 倒序排序 |
| -f | 忽略大小写排序 |
| -n | 数值大小排序 |
| -u | 去除重复行 |
| -t | 指定分隔符 |
| -k | 指定排序字段 |
| -o | 将排序后的结果输出到指定文件 |
2. uniq 命令 - 找出或删除文本文件中连续出现的重复行
uniq "选项" "输入文件" "输出文件"
- #如果不指定输入文件,则会从标准输入获取数
- #如果不指定输出文件,则结果会打印到标准输出
| 常用选项 | 解释 |
|---|
| -c | 显示每行出现的次数并压缩重复行 |
| -u | 只输出不重复的行 |
| -d | 只输出重复的行 |
3. tr 命令 - 用于字符转换
tr "选项" "字符集1" "字符集2"
| 常用选项 | 解释 |
|---|
| -c | 除了指定字符外的所有字符都被替换 |
| -d | 删除指定的字符 |
| -s | 压缩重复的字符为单个字符 |
4. cut 命令 - 对字段进行截取和剪裁
cat "选项" "参数"
| 常用选项 | 解释 |
|---|
| -d | 指定分隔符 |
| -f | 按字段进行截取 |
| -b | 按字节进行截取 |
| -c | 按字符进行截取 |
| -complement | 排除所指定的字段 |
| -output-delimiter | 更改输出内容的分隔符 |
[root@wzx demo]# cat ip.txt
192.168.110.111
20.11.66.98
333.333.333.333
666.6666.6666.6666
[root@wzx demo]# cut -d'.' -f2 ip.txt
168
11
333
6666