zoukankan      html  css  js  c++  java
  • awk基本语法几则

    1、循环语句:

    awk中的循环语句同样借鉴于C语言,支持whiledo/whileforbreakcontinue,这些关键字的语义和C语言中的语义完全相同。

    2、流程控制语句:

    next语句是从文件中读取下一行,然后从头开始执行awk脚本。

    exit语句用于结束awk程序。它终止对记录的处理。但是不会略过END模块,如果exit()语句被赋值0--255之间的参数,如exit(1),这个参数就被打印到命令行,以判断退出成功还是失败。

    3、重定向

    /> awk '$4 >= 70 {print $1,$2 > "passing_file"}' filename  #注意这里的文件名需要用双引号括起来。

    4、输入重定向

    awk中对于输入重定向是通过getline函数来完成的。getline函数的作用是从标准输入、管道或者当前正在处理的文件之外的其他输入文件获得 输入。他负责从输入获得下一行的内容,并给NFNRFNR等内建变量赋值。如果得到一个记录,getline就返回1,如果达到文件末尾就返回0。如 果出现错误,如打开文件失败,就返回-1

    /> awk 'BEGIN { "date" | getline d; print d}'

    Tue Nov 15 15:31:42 CST 2011

    上例中的BEGIN动作模块中,先执行shell命令date,并通过管道输出给getline,然后再把输出赋值给自定义变量d并打印输出它。

    /> awk 'BEGIN { "date" | getline d; split(d,mon); print mon[2]}'

    Nov

    上例中date命令通过管道输出给getline并赋值给d变量,再通过内置函数splitd拆分为mon数组,最后printmon数组的第二个元素。

    5、关闭管道

    由于awk中同时打开的管道只有一个,那么在打开下一个管道之前必须关闭它,管道符号右边可以通过可以通过双引号关闭管道。如果不关闭,它将始终保持打开状态,直到awk退出。

    /> awk {print $1,$2,$3 | "sort -4 +1 -2 +0 -1"} END {close("sort -4 +1 -2 +0 -1") } filename

    上例中END模块中的close显示关闭了sort的管道,需要注意的是close中关闭的命令必须和当初打开时的完全匹配,否则END模块产生的输出会和以前的输出一起被sort分类。

    6、初始化变量

    awk在动作部分还提供了BEGIN块和END块。其中BEGIN动作块在awk处理任何输入文件行之前执行。事实上,BEGIN块可以在没有任何输入 文件的条件下测试。因为在BEGIN块执行完毕以前awk将不读取任何输入文件。BEGIN块通常被用来改变内建变量的值,如OFSRSFS等。也可 以用于初始化自定义变量值,或打印输出标题。

    #从输入文件中找到以north开头的记录count就加一,最后在END块中输出该变量。

    /> awk '/^north/{count++}; END{print count}' testfile

    原文:

    本篇文章写的非常好,更多参考

    http://www.cnblogs.com/mchina/archive/2012/06/30/2571317.html

  • 相关阅读:
    获得音视频信息
    stf-多设备管理平台搭建
    接口用例设计
    阿里云Ubuntu服务器搭建SVN
    Jenkins首次启动卡在加载页面
    初使Jenkins构建Python项目
    MongoDB使用python脚本写入数据
    python re操作
    使用Python脚本写入MongoDB数据
    chromedriver与chrome版本对应表及下载地址
  • 原文地址:https://www.cnblogs.com/mydomain/p/2699049.html
Copyright © 2011-2022 走看看