awk学习笔记--正则表达式

来源:互联网 发布:淘宝大件家具退货运费 编辑:程序博客网 时间:2024/04/30 03:04

对于awk而言,正则表达式是至于两个正斜杠之间,由字符组成的模式,如果输入行中的某个字符串与正则表达式相匹配,则最终条件为真,于是执行域该表达式关联的所有操做。

 

awk正则表达式模式:

awk  /regularexpression/  pattern

 

元字符

说明

^

在串首匹配

$

在串尾匹配

.

匹配单个任意字符

*

匹配零个或多个前导字符

+

匹配一个或多个前导字符

匹配零个或一个前导字符

|(A|B)

指定如果以 |(垂直线)隔开的字符串的任何一个在字符串中,则字符串匹配,匹配A或B

[ABC]

匹配指定字符组(即A、B和C)中任一字符

[^ABC]

匹配任何一个不在指定字符组(即A、B和C)中的字符

[A-Z]

匹配A至Z之间的任一字符

(AB)+

将字符串组合在一起,匹配一个或多个AB的组合,例如:AB、ABAB

~,!~

表示指定变量与正则表达式匹配(代字号)或不匹配(代字号、感叹号)的条件语句

{m, n}

指定如果 m 和 n 之间(包含的 m 和 n)个模式的具体值在字符串中(其中m<= n),则字符串匹配

\

转义字符。位于正则表达式中具有特殊含义的任何字符之前时,转义字符除去其任何特殊含义

&

用于替代串中,代表查找串中匹配到的内容

\<>/

单词定位

\(\)

向前引用

\{\}

重复

 

实例:

[mywork@oraserver awk]$ more example.file tmpfs      /dev/shm                tmpfs   defaults        0 1 3.23devpts     /dev/pts                devpts  gid=5,mode=620  0 2 9.98sysfs      /sys                    sysfs   defaults        0 3 0.76proc      /proc                   proc    defaults        0 4 ..56

 

 

 

--打印s开头的字符串

[mywork@oraserver awk]$ awk '/^s/'example.file  sysfs                   /sys                    sysfs   defaults        0 3 0.76

 

--打印6结尾的字符串

[mywork@oraserver awk]$ awk '/6$/'example.file sysfs                   /sys                    sysfs   defaults        0 3 0.76proc                    /proc                   proc    defaults        0 4 ..56

 

--打印表达式含“6”,“oc”的字符串

[mywork@oraserver awk]$ awk '/.6/'example.file devpts                  /dev/pts                devpts  gid=5,mode=620  0 2 9.98sysfs                   /sys                    sysfs   defaults        0 3 0.76proc                    /proc                   proc    defaults        0 4 ..56[mywork@oraserver awk]$ awk '/.oc/'example.file proc                    /proc                   proc    defaults        0 4 ..56

 

--打印匹配一个3或者多个3的字符串

[mywork@oraserver awk]$ awk '/3+/'example.file tmpfs                   /dev/shm                tmpfs   defaults        0 1 3.23sysfs                   /sys                    sysfs   defaults        0 3 0.76

 

--打印匹配零个3或者一个3的字符串

 [mywork@oraserverawk]$ awk '/3?/' example.file tmpfs                   /dev/shm                tmpfs  defaults        0 1 3.23devpts                  /dev/pts                devpts  gid=5,mode=620  0 2 9.98sysfs                   /sys                    sysfs   defaults        0 3 0.76proc                    /proc                   proc    defaults        0 4 ..56

 

--打印匹配z或匹配k的字符串

[mywork@oraserver awk]$ awk '/(z|k)/'example.file 

 

--打印匹配s或匹配k的字符串

[mywork@oraserver awk]$ awk '/(s|k)/'example.file tmpfs                   /dev/shm                tmpfs   defaults        0 1 3.23devpts                  /dev/pts                devpts gid=5,mode=620  0 2 9.98sysfs                   /sys                    sysfs   defaults        0 3 0.76proc                    /proc                   proc    defaults