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次 |
( ) |
将括号里的内容看成一个整体 |
| | 以或的方式匹配字符串 |