AWK使用总结1

174 阅读3分钟

引言

  • 本文主要是介绍关于AWK的一些概念以及一些基本使用格式,仅供参考。
  • AWK经常搭配shell使用,但是其并不属于shell语法准确说它是Linux下的一个指令(工具),其与sed与grep,俗称Linux下的三剑客。

AWK的一些基本概念和可实现功能

  • AWK是一个强大的文本分析工具,虽然grep和sed都可以对文本进行匹配分析处理,但是各有各的特色。
  • 个人感觉awk更像是一门模式匹配的编程语言(创始人说其是"样式扫描和处理语言"),它的主要功能是用于匹配文本并处理,但是其匹配文本处理的时候可以使用一些编程语言才有的语法,例如函数、循环语句、变量等等,可它又比学习一门新的编程语言要容易很多。
  • AWK不是哪个英文,而是三个创始人形式的首字母缩写,一般未作特别说明,awk一般指的是gawk,即awk的GNU版本。
  • 在使用awk,我们可以
    • 将文本文件视为由字段和记录组成的文本数据库;
    • 操作该文本数据库的时候使用变量,数学运算,字符串操作,使用分支循环,自定义函数,格式化输出等;
    • 能够在awk脚本中执行UNIX命令,并处理UNIX命令的输出结果;

awk的调用方法(先介绍命令行方式)

  • awk的调用方法有三种:
    • 命令行方式
    • shell脚本方式
    • 完全由awk指令组成的文件来调用
  • 命令行方式调用awk有两种形式
    • awk [-F ERE] [-v assignment] ... program [argument ...]
    • awk [-F ERE] -f progfile ... [-v assignment] ...[argument ...]
    • -F ERE:定义字段分隔符,该选项的值可以是扩展的正则表达式(ERE),从上面我们使用awk可以实现的功能第一条,文本文件将被分割开来,个人理解这个分隔符就是分割条件(默认是空格);
    • -f progfile:指定awk脚本(第三种调用方式,以.awk后缀命名),支持同时指定多个脚本其会按照在命令行中出现的顺序连接在一起执行;
    • -v assignment:定义awk变量,形式类似编程语言中的变量赋值,即变量=value,注意赋值发生在awk处理文本之前;
    • program是awk真正意义上要执行的程序,格式是PATTERN{ACTIONS},awk每读入一行,都会先与PATTERN做匹配比较,当找到符合条件的数据就执行对应的ACTION
      • 其中PATTERN或ACTIONS二者可省略其中一个。省略PATTERN时表示对所有行都执行ACTIONS,省略ACTIONS表示对符合条件的行执行默认的print操作。通常使用大括号{}将ACTIONS部分包围起来,以区分PATTERN和ACTIONS
  • 由于内容较多,具体使用实例下一篇文章继续介绍。