[关闭]
@boothsun 2017-03-02T09:39:49.000000Z 字数 1459 阅读 1354

linux awk命令详解

Linux


awk介绍

awk是一个强大的文本分析工具,相对于grep的查找,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切成的部分再进行各种分析处理。

awk的最基本功能是在文件中或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完成的awk脚本通常用来格式化文本文件中的信息。

使用方式

  1. awk '{pattern + action}' {filename}

  1. awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' fileName

一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的统一语句块、END语句块3部分组成,这三个部分都是可选的。

调用awk

  1. 命令行方式:
  1. awk [-F field-separator] 'commands' input-file(s)
  1. shell脚本方式
    将所有的awk命令插入一个文件,并使程序可执行,然后awk命令解释器作为脚本的首行。相当于shell脚本首行的:#!/bin/sh 可以换成: #!/bin/awk

  2. 将所有的awk命令插入一个单独文件,然后调用:

  1. awk -f awk-script-filename input-file(s)

awk pattern和action

  1. pattern 模式可以是以下任意一个:

    • /正则表达式/:使用通配符的扩展集。
    • 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。
    • 模式匹配表达式:用运算符~(匹配)和!~(不匹配)
    • BEGIN语句块、pattern语句块、END语句块。
  2. action 操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内。

awk内置变量

  1. ARGC 命令行参数个数
  2. ARGV 命令行参数排列
  3. ENVIRON 支持队列中系统环境变量的使用
  4. FILENAME awk浏览的文件名
  5. FNR 浏览文件的记录数
  6. FS 设置输入域分隔符,等价于命令行 -F选项
  7. NF 浏览记录的域的个数
  8. NR 已读的记录数
  9. OFS 输出域分隔符
  10. ORS 输出记录分隔符
  11. RS 控制记录分隔符

此外,$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域..... , 以此类推。同时,使用$NF可以表示最后一个字段,使用$(NF-1)则是打印倒数第二个字段,其他也是以此类推。

print和printf

print函数的参数可以是变量,数值或者字符串。
printf提供了格式化的打印输出。

参考链接:

linux awk命令详解

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注