Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68495
  • 博文数量: 17
  • 博客积分: 508
  • 博客等级: 下士
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-20 12:56
文章分类
文章存档

2010年(17)

分类:

2010-09-13 19:41:26

   正则表达式是置于两个斜杠之间、由字符组成的模式。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)
阅读(1494) | 评论(0) | 转发(0) |
0

上一篇:awk之模式与操作篇

下一篇:比较表达式

给主人留下些什么吧!~~