正则表达式是置于两个斜杠之间、由字符组成的模式。awk支持正则表达式元字符对正则表达式进行某种方式的修改,如果输入行中的某个字符串与正则表达式相匹配,则最终条件为真,于是执行与该表达式关联的所有操作。如果没有则制定操作,则打印与正则表达式匹配的记录。
如awk '/tom/' datafile
awk的正则表达式元字符
1. ^ 在串首匹配
2. $ 在串尾匹配
3. . 匹配单个任意字符
4. * 匹配零个或多个前导字符
5. + 匹配一个或多个前导字符
6. ? 匹配零个或一个前导字符
7. [ABC] 匹配指定字符组中的任一字符
8.[^ABC] 匹配任何一个不在指定字符组中的字符
9.[A-Z] 匹配A值Z之间的任一字符
10. A|B 匹配A或着B
11. (AB)+ 匹配一个或多个AB的组合,如AB、ABAB、ABABAB、
12.\* 匹配星号本身
13. & 用在替代串中,代表查找串中匹配到内容
awk不支持的元字符
1.\<>/ 单词定位
2.\(\) 向前引用
3.\{\} 重复
1.1 匹配整行
没有制定操作,则单个正则表达式对整行进行模式匹配,并打印所有匹配行,可以使用元字符^来表示进行行首匹配的正则表达式
1.2 匹配操作符
匹配操作符(~)用于记录对记录或字段表达式进行匹配。
如
awk '$1 ~ /[Bb]ill/' datafile 显示所有在第一个字段里匹配到的bill或着Bill的行
awk '$1 !~ /ly$/' datafile 显示所有第一个字段不是以ly结尾的行
1.3 POSIX(the Portable Operation system interface)增加的括号字符类
括号类
[:alnum:] 字母数字字符
[:alpha:] 字母字符
[:cntrl:] 控制字符了
[:digit:] 数字字符
[:graph:] 非空白字符(非空格、控制字符等)
[:lower:] 小写字母
[:print:] 与[:graph:]相似,但是包含空格字符
[:punct:] 标点字符
[:space:] 所有的空白字符(换行符,空格,制表符)
[:upper:] 大写字母
[:xdigit:] 允许十六进制的数字(0-9a-fA-F)
阅读(1506) | 评论(0) | 转发(0) |