awk脚本 模式匹配语句 ~匹配运算符 !~不匹配运算符

 
网络后台开发工具     tcpdump(抓包) route(路由)  nslookup和host(路由)  md5sum(版本校验)
 
Linux文件权限的修改chmod命令参数详解及umask值的含义

awk脚本 模式匹配语句 ~匹配运算符 !~不匹配运算符  

2010-12-02 09:16:49|  分类: Shell脚本编程 |  标签: |举报 |字号 订阅

 

 

1、匹配运算符~的使用:

#!/usr/bin/awk  -f

BEGIN{

                      //各种操作。

}

{

                        下面的:/条件/ 

                                     比如:

                                       /^abc/ 表示以abc开头,其中^表示在行首位置进行匹配。

                                       /abc$/ 示以abc结尾,其中$表示在行尾位置进行匹配。

                                       /abc/   表示当前记录行中只要有abc串就可以。

                                       /[a-d]/  表示与a-d中的任意一个字符匹配。即当前行中只要有a-d中的任意一个字符就匹配成功。

                                      /[acwy]/表示与a、c、w、y中的任意一个字符匹配。即当前行中只要有a、c、w、y中的任意一个字符就匹配成功。

                                       /[^a-d]/表示不与a-d中的任意一个字符做匹配。等等。

                                       /DESK|CHAIR/表示与DESK匹配或与DESK匹配。

                                       /[ABC]*/   表示与A、B、C中任意一个出现0次或多次的字符相匹配。

                                       /[ABC]+/   表示与A、B、C中任意一个出现1次或多次的字符相匹配。

                                      /./               表示任意一个字符,“.”表示任意一个字符。

                       if( $0~/条件/)                                            

                       {

                                                //动作。

                       }

}

END{

                      //操作。

}

 

 

2、不匹配运算符!~的使用:

              将上面的~替换成!~就表示不匹配。

 

 

首先举个几个例子。

1、用awk匹配出filename指定的文件中带有sun的行:

            在命令行中是:   awk   '/sun/ {print $0}'  filename

            编写awk脚本为:

             #!/usr/bin/awk  -f

             BEGIN{

            }

            {

                           if($num~/sun/)              //$num中的num是0~9,~表示匹配

                           {

                                          print  $0

                          }

            }

            END{

            }

 

awk的常规表达式元字符:

         ^    表示在文件中的行首进行匹配。           例如:/^sun/表示模式匹配以sun开头的行。

         $   表示在文件中的行尾进行匹配。            例如:/sun$/表示模式匹配以sun结尾的行。

         .    表示任何单个字符串匹配。                注意:是单个字符串。

        [ABC]   表示与[]内的任意一字符匹配。      例如:/[Mm]oon/示模式匹配包含Moon或moon的行。      

       [A-Ca-c]   表示与A-C及a-c范围内的单个字符匹配。     例如:/^[a-b][c-d][e-f]/表示开始第一个字符是a或b,第二个字符是c或d,第三个字符是e或f。同样的道理,/[a-b][c-d][e-f]$/表示从记录的后面开始匹配。

      Desk|Chair 表示与Desk和Chair中的任意一个匹配

     

      注意:

                  [^ABC] 与除[ ]内的所有字符以外的任一字符匹配。

 

                 [ABC]*   表示与A、B、C中任意一个出现0次或多次的字符相匹配。

                 [ABC]+   表示与A、B、C中任意一个出现1次或多次的字符相匹配。

 

你可能感兴趣的:(新手开发linux,linux开发)