注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

awk简明教程  

2014-02-22 21:43:19|  分类: shell脚本 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转自:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201010308465339/

awk使用格式:

           awk   -F分隔符   参数   'BEGIN{预处理部分}  {真正的处理部分}   END{善后处理工作}'    待处理文件

            -F       -F后面紧跟着分隔符,如-F:,表示以“:”作为列与列之间的分隔符。

            参数   传递给.awk文件的参数。内置变量ARGC是命令行参数的个数,ARGV是命令行参数数组。

           其中'BEGIN{预处理部分}    {真正处理部分}  END{善后处理工作}',可以写在一个.awk文件中。

也使用-f  filename.awk来调用.awk文件。

 

举例:

           编写一个awk脚本,名字为file.awk:

           BEGIN{                          #特别注意,这个“{”只能紧跟着BEGIN,而不能放在下一行。

                          printf("BEGIN\n");

                          #在使用命令行时,可以使用-F,指定分隔符。

                          #在使用.awk文件文件时,可以在BEGIN修改内置变量的值,比如,修改默认的分隔符。

                          #FS=":",相当于-F:

                        

                         #完成初始化,设定工作。
           }

           {
                        for(i=1;i<NF;i++)
                        {
                                 printf("%s",$i);
                        }
                        printf("\n");
           }
           END{                               #特别注意,这个“{”只能紧跟着END,而不能放在下一行。
                        printf("END\n");

                        #在这里可以回复shell内置变量的值

 

                       #完成变量的恢复工作。
          }

 

           待处理文件     将要进行处理的文件。

           

 

一、内置变量表                   //内置变量是可以直接使用的。   $0就表示一行。

 

在awk中,记录表示一行,字段表示一列。

 

属性 说明
$0 当前记录(作为单个变量)        //$0表示待处理文件的一行                                                                    
$1~$n

当前记录的第n个字段(一个字段,表示一列),字段间由FS分隔       

//$1~Sn表示待处理文件的第一列,第二列~第n列

FS

输入字段分隔符(即一列和一列的分隔符)     默认是空格    

//可以用-F参数重新设定,比如-F:,表示以“:”作为分隔符。也可以在.awk文件的BEGIN部分对FS重新赋值,比如FS=":"

NF

当前记录中的字段个数,就是有多少列         

//表示待处理文件有多少列

NR 已经读出的记录数,就是行号,从1开始
RS 输入记录他隔符(即一行和一行的分隔符)       默认为换行符          
OFS 输出字段分隔符                      默认也是空格
ORS 输出记录分隔符                      默认为换行符
ARGC 命令行参数个数                                  //传递给.awk脚本文件的参数个数。
ARGV 命令行参数数组                                  //传递给.awk脚本文件的参数数组。
FILENAME 当前输入文件的名字
IGNORECASE 如果为真,则进行忽略大小写的匹配
ARGIND 当前被处理文件的ARGV标志符
CONVFMT 数字转换格式 %.6g
ENVIRON UNIX环境变量
ERRNO UNIX系统错误消息
FIELDWIDTHS 输入字段宽度的空白分隔字符串
FNR 当前记录数
OFMT 数字的输出格式 %.6g
RSTART 被匹配函数匹配的字符串首
RLENGTH 被匹配函数匹配的字符串长度
SUBSEP \034
  评论这张
 
阅读(175)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017