免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1198 | 回复: 0
打印 上一主题 下一主题

shell 阅读笔记-awk简略板 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-03 09:26 |只看该作者 |正序浏览
   有三种方式调用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条件操作符
      =   大于等于
     > 关系操作符
       + - * / % ^ 算术操作符
      ++  -- 前缀和后缀
    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的后缀部分
 

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4591/showart_13924.html
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP