文本:
a1
b22
c333
C333
d4444
eeeee
fff
POSIX字符集:
[:alnum:] 文字数字字符
[:alpha:] 文字字符
[:digit:] 数字字符
[:graph:] 非空字符(非空格、控制字符)
[:lower:] 小写字符
[:cntrl:] 控制字符
[:print:] 非空字符(包括空格)
[:punct:] 标点符号
[:space:] 所有空白字符(新行,空格,制表符)
[:upper:] 大写字符
[:xdigit:] 十六进制数字(0-9,a-f,A-F)
要在awk中开启支持posix类字符,需要多加一对中括号比如
- awk '/[[:lower:]]/' file
- a1
- b22
- c333
- d4444
- eeeee
- fff
这样就过滤掉了大写的C的行,awk本身就支持扩展正则表达式的,所以如果要过滤一个小写字母开头后面是数字的行呢就可以这样表达
- awk '/[[:lower:]][0-9]+/' file
- a1
- b22
- c333
- d4444
如果还要精确范围类似我们说的正则表达式的x\{m,n\}呢,这时候需要开启posix支持:
- awk --posix '/[[:lower:]][0-9]{1,2}$/' file
-
a1
-
b22
-
-
awk --re-interval '/[[:lower:]][0-9]{1,2}$/' file
-
a1
-
b22
阅读(1139) | 评论(0) | 转发(0) |