Chinaunix首页 | 论坛 | 博客
  • 博客访问: 644061
  • 博文数量: 151
  • 博客积分: 3498
  • 博客等级: 中校
  • 技术积分: 1570
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-28 18:10
文章分类

全部博文(151)

文章存档

2014年(12)

2013年(17)

2012年(17)

2011年(5)

2010年(12)

2009年(2)

2007年(26)

2006年(22)

2005年(38)

分类: LINUX

2005-03-03 09:26:50

   有三种方式调用a w k

   第一种是命令行方式,如:
   awk -F: 'command' input_file
   这里,command是真正的a w k命令。本章将经常使用这种方法。
  上面例子中, [ - F域分隔符]是可选的,因为a w k使用空格作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项  

   ,但如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明- F选项.

   第二种方法是将所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它

   第三种方式是将所有的awk命令插入一个单独文件,然后调用:
   awk -f awk_script_file input_file
    -f选项指明在文件a w k _ s c r i p t _ f i l e中的a w k脚本, i n p u t _ f i l e ( s )是使用a w k进行浏览的文件名。

一  awk  
  1 有三种方式调用a w k

   第一种是命令行方式,如:
   awk -F: 'command' input_file
   这里,command是真正的a w k命令。本章将经常使用这种方法。
  上面例子中, [ - F域分隔符]是可选的,因为a w k使用空格作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项  

   ,但如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明- F选项.

   第二种方法是将所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它

   第三种方式是将所有的awk命令插入一个单独文件,然后调用:
   awk -f awk_script_file input_file
    -f选项指明在文件a w k _ s c r i p t _ f i l e中的a w k脚本, i n p u t _ f i l e ( s )是使用a w k进行浏览的文件名。

   2 域和记录
         a w k执行时,其浏览域标记为$ 1,$ 2 . . . $ n。这种方法称为域标识。使用这些域标识将更容易对域进行进一步处理。
    使用$ 1 , $ 3表示参照第1和第3域,注意这里用逗号做域分隔。如果希望打印一个有5个域的记录的所有域,不必指明$ 1 , $ 2 , $ 3 ,

    $ 4 , $ 5,可使用$ 0,意即所有域。Aw k浏览时,到达一新行,即假定到达包含域的记录末尾,然后执行新记录下一行的读动作,并重  

   新设置域分隔。
        注意执行时不要混淆符号$和s h e l l提示符$,它们是不同的。为打印一个域或所有域,使用p r i n t命令。这是一个a w k动作(

   动作语法用圆括号{}括起来)。

  3 awk 正则表达式及其 操作
       awk条件操作符
     <     小于                     > =   大于等于
     <=    小于等于                 ~      匹配正则表达式
     ==    等于                     !~ 不匹配正则表达式
     !=    不等于

   4  匹配
     为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用if语句。a w k中if后面的条件用()括起来。
      {if($4~/brown/) print $4}意即如果field-4包含brown,打印它。

   5 复合表达式
     && AND : 语句两边必须同时匹配为真。
     || O R:语句两边同时或其中一边匹配为真。
     ! 非求逆
     awk '{if($4=="48" && $1="kk")print $0}' input_file
   
    6 awk操作符
    在a w k中使用操作符,基本表达式可以划分为数字型、字符串型、变量型、域及数组元素,前面已经讲过一些。下面列出其完整列表。
     在表达式中可以使用下述任何一种操作符。
     =  +=  *=  /  =  %=  ^  = 赋值操作符
     ? 条件表达操作符
     || && ! 并、与、非(上一节已讲到)
     ~!~ 匹配操作符,包括匹配和不匹配
     <  <=  ==  !=  >> 关系操作符
       + - * / % ^ 算术操作符
      ++  -- 前缀和后缀

    7  内置的字符串函数
      awk有许多强大的字符串函数,见表9 - 4。
      gsub(r,s)   在整个$ 0中用s替代r
      gsub(r,s,t) 在整个t中用s替代r
      index(s,t)  返回s中字符串t的第一位置
      length(s)   返回s长度
      match(s,r)  测试s是否包含匹配r的字符串
      split(s,a,fs)   在fs上将s分成序列a
      sprint(fmt,exp) 返回经f m t格式化后的e x p
      sub(r,s)        用$ 0中最左边最长的子串代替s
      substr(s,p)     返回字符串s中从p开始的后缀部分
      substr(s,p,n)    返回字符串s中从p开始长度为n的后缀部分
 

阅读(847) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~