shell中的文本处理命令和正则表达式
一、文本处理命令
1.1、sort命令
使用格式:sort [选项] 参数
常见选项:
| 选项 | 作用 |
| -f | 忽略大小写,将小写字母转换成大写字母来比较 |
| -b | 忽略每行前面的空格 |
| -n | 按照数字排序 |
| -r | 反向排序 |
| -u | 等同于uniq表示相同的数据仅显示一行 |
| -t | 指定字段分隔符 |
| -k | 指定排序字段 |
1.2、uniq命令
使用格式:
uniq [选项] 参数
常见选项:
| 选项 | 作用 |
| -c | 在数据行前出现的次数 |
|
-d |
只打印出现的行,重复的行只显示一次 |
| -D | 只打印出现的行,重复几次就显示几次 |
| -u | 仅显示出现过一次的行 |
1.3、tr命令
命令格式:
tr [选项] 参数
常用选项:
| 选项 | 作用 |
| -d | 删除 |
| -s | 压缩 |
1.4、cut命令
命令格式
cut [选项] 参数
常见选项
|
选项
|
说明
|
|
-d
|
指明分隔符
|
|
-f
|
选取指定字段
|
二、正则表达式
2.1、正则表达式的含义
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。许多程序设计语言都支持利用正则表达式进行字符串操作。
2.2、基础正则表达式
(支持的工具:grep、egrep、sed、awk)
| 字符 | 作用 |
| \ | 转义字符,可以把一些特殊的符号转换成普通的符号字符,还可以把一些普通字符转换成特殊功能,例:\!、\n、\$等 |
| ^ | 表示匹配字符串开始的位置,匹配行首,例: ^a、 ^# |
| $ | 表示匹配字符串末尾的位置,匹配行尾,例: word$、 #$ ;^$表示空行 |
| . | 匹配除\n之外的任意的一个字符,例: go.d、g..d |
| * | 匹配前面子表达式0次或者多次,例: goo*d、go.*d |
| .* | 表示任意长度的任一字符 |
| [my] | 表示匹配[ ]中包含的任一字符 |
| [^my] | 表示匹配除[ ]中包含的任一字符 |
| \{n\} | 匹配前面的子表达式n次,例:mo\{2\}y、'[0-9]\{ 2\ }'匹配两位及两位以上数字 |
| \{n,\} | 匹配前面的子表达式不少于n次,例: mo\{2,\}y、'[0-9]\{2,\}'匹配两位及两位以上数字 |
| \{n,m\} | 匹配前面的子表达式n到m次(m>=n),例: mo\{2,3\}y、'[0-9]\{2,3\}'匹配两位到三位数字 |
2.3、扩展正则表达式
(支持的工具: egrep、awk、grep -E、sed -r)
| 字符 | 作用 |
|---|---|
| + | 表示匹配前面的子表达式1次以上 |
| ? | 表示匹配前面的子表达式0或者1次 |
|
( ) |
将括号里的内容看成一个整体 |
| | | 以或的方式匹配字符串 |

浙公网安备 33010602011771号