$
cat employees
Tom Jones 4424 5 / 12 / 66 543354
Mary Adams 5346 11 / 4 / 63 28765
Sally Chang 1654 7 / 22 / 54 650000
Billy Black 1683 9 / 23 / 44 336500
Tom Jones 4424 5 / 12 / 66 543354
Mary Adams 5346 11 / 4 / 63 28765
Sally Chang 1654 7 / 22 / 54 650000
Billy Black 1683 9 / 23 / 44 336500
$ awk
'$1 ~ /[Bb]ill/' employees
Billy Black 1683 9 / 23 / 44 336500
Billy Black 1683 9 / 23 / 44 336500
说明:显示所有在第一个字段里匹配到Bill或bill的行。
POSIX字符类 POSIX(the Portable Operating System Interface,可移植操作系统接口)是一种工业标准,确保程序可以跨操作系统移植。为了保证可移植, POSIX可以识别字符、阿拉伯数字和符号在不同国家或不同场合的编码方法,以及时间和时期的不同表示。为了处理不同类型的字符,POSIX增加了基本的和扩展的正则表达式,下表对括号字符类进行了说明。对于UNIX,gawk支持这些新的元字符类,而awk不支持;而对于Linux,则应当明白awk是链接到gawk上的,也就是说awk和gawk的命令同样有效。
POSIX增加的括号字符类
括号类 | 含义 |
---|---|
[:alnum:] | 字母数字字符 |
[:alpha:] | 字母字符 |
[:cntrl:] | 控制字符 |
[:digit:] | 数字字符 |
[:graph:] | 非空白字符(非空格、控制字符等) |
[:lower:] | 小写字母 |
[:print:] | 与[:graph:]相似,但是包含空格字符 |
[:punct:] | 标点字符 |
[:space:] | 所有的空白字符(换行符、空格、制表符) |
[:upper:] | 大写字母 |
[:xdigit:] | 允许十六进制的数字(0-9a-fA-F) |
在类中, [:alnum:]是另一种表示A-Z、a-z和0-9的形式,使用这种类时,必须要用另外一个方括号扩起来,例如"A-Za-z0-9" 自己本身不是正则表达式,而[A-Za-z0-9]则是正则表达式。类似地,[:alnum:] 应该写为[[:alnum:]] 。第一种形式[A-Za-z0-9]与方括号形式[[:alnum:]] 的不同之处在于,前者依赖于ASCII字符编码的形式,而第二种形式允许其他语言的字符在类中表示,例如瑞典语和德语。
参考文章:http://www.linuxawk.com/jiaocheng/134.html