• 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

  • 相关阅读:
    css基础
    html常用标签
    自写一个ant-design-pro AnimationList组件
    设计一个A表数据抽取到B表的抽取过程
    垂直、水平方向观看楼层天际线不变情况下能增加的建筑物高度最大总和
    JavaScript 新旧替换一:变量声明
    前端异常类型及捕获方式
    自定义 create-react-app
    Git Commit 规范参考
    JavaScript 团队规范参考
  • 原文地址:https://www.cnblogs.com/mydomain/p/2699049.html
Copyright © 2020-2023  润新知