目录
一.正则表达式定义
1.正则表达式的组成
- 正则表达式,又称正规表达式、常规表达式
- 使用字符串来描述、匹配一系列符合某个规则的字符串
- 正则表达式组成
- 普通字符
- 大小写字母、数字、标点符号及一些其他符号
- 元字符
- 在正则表达式中具有特殊意义的专用字符
正则表达式包括基本正则表达式和扩展正则表达式
2.基本正则表达式元字符
. | 匹配任意单个字符,可以是一个汉字 |
* | 匹配前面子表达式0次或者多次 |
[ ] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
\转义字符 | 用于取消特殊符号的含义 |
\{n\} | 匹配前面的子表达式n次 |
\{n,\} | 匹配前面的子表达式不少于n次 |
\{n,m\} | 匹配前面的子表达式n到m次 |
[:alnum:] | 字母和数字 |
[:alpha:] | 代表任何英文大小写字符,即A-Z a-z |
[:lower:] | 小写字母 |
[:upper:] | 大写字母 |
[:blank:] | 空白字符(空格和制表符) |
[:space:] | 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白 |
[:cntrl:] | 不可打印的控制字符(退格、删除、警铃...) |
[:digit:] | 十进制数 |
[:xdigit:] | 十六进制 |
[:graph:] | 可打印的非空白字符 |
[:print:] | 可打印字符 |
[:punct:] | 标点符号 |
\w | 匹配单词构成部分,等价于[:alnum:] |
\W | 匹配非单词构成部分,等价于[^[:alnum:]] |
\S | 匹配任何非空白字符,等价于[^ \ f \ n \ r \ t \ v] |
\s | 匹配任何空白字符,包括空格,制表符,换页符等等,等价于[ \ f \ n \ r \ t \v ] |
egrep、awk使用{n}、{n,}、{n,m}匹配时“{}”前不用加“\”
3.扩展正则表达式元字符
支持的工具:egrep、awk 或 grep -E 和 sed -r
+ | 匹配前面子表达式1次以上 |
? | 匹配前面子表达式0次或者1次 |
() | 将括号中的字符串作为一个整体 |
| | 以或的方式匹配字条串 |
4.表示次数
1.常用选项
* | 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配 |
.* | 任意长度的任意字符 |
\? | 匹配其前面的字符出现0次或1次 |
\+ | 匹配其前面的字符出现最少1次 |
\{n\} | 匹配前面的字符n次 |
\{m,n\} | 匹配前面的字符至少m次,至多n次 |
\{,n\} | 匹配前面的字符至多n次 |
\{n,\} | 匹配前面的字符至少n次 |
2.提取IP地址
3.其他示例
5.位置锚定
1.常用选项
^ | 行首锚定,用于模式的最左侧 |
$ | 行尾锚定,用于模式的最右侧 |
^APATTERN$ | 用于模式匹配整行(单独一行) |
^$ | 空行 |
^[[:sapce:]] | 空白行 |
\< 或 \b | 词首锚定,用于单词模式的左侧 (连续的数字,字母,下划线都算单词内部) |
\> 或 \b | 词尾锚定,用于单词模式的右侧 |
<PATTERN\> | 匹配整个单词 |
2.实例
6.分组或其他
分组:( )将多个字符捆绑在一起,当作一个整体处理,如:(root)+
后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,13,...
\1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
需要转义
二.sort排序
以行对文件进行排序
选项 | 说明 |
---|---|
-f | 忽略大小写,会将小写字母都转换为大写字母来进行比较 |
-b | 忽略每行前面的空格 |
-n | 按照数字进行排序 |
-r | 反向排序 |
-u | 等同于uniq,表示相同的数据仅显示一行 |
-t | 指定字段分隔符,默认使用[Tab]键分隔 |
-k | 指定排序字段 |
-o<输出文件> | 将排序后的结果转存至指定文件 |
-h | 友好显示 |
三.uniq去重
选项 | 说明 |
---|---|
-c | 进行计数,并删除文件中重复出现的行 |
-d | 仅显示连续的重复行 |
-u | 仅显示出现一次的行 |
-i | 忽略大小写 |
四.tr转换
用来对来自标准输入的字符进行替换、压缩和删除
选项 | 说明 |
---|---|
-c | 保留字符集1的字符,其他的字符用(包括换行符\n)字符集2替换 |
-d | 删除所有属于字符集1的字符 |
-s | 将重复出现的字符串压缩为一个字符串;用字符集2 替换 字符集1 |
-t | 字符集2 替换 字符集1,不加选项同结果 |
五. cut
选项 | 说明 |
---|---|
-f | 通过指定哪一个字段进行提取。cut命令使用“TAB”作为默认的字段分割符 |
-d | “TAB”是默认的分隔符,使用此选项可更改为其他的分隔符 |
-c | 以字符为单位进行分割 |
- -complement | 用于排除所指定的字段 |
- -output-delimiter | 更改输出内容的分隔符 |