awk 命令行

Posted 行走于代码间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk 命令行相关的知识,希望对你有一定的参考价值。

awk:

    强大的文本处理工具,擅长对日志文件进行分析;

    不仅用于Linux,也是任何环境中现在的功能最强大的数据处理引擎;

 

语法说明:

awk \'{pattern + action}\' {filenames}

pattern:指在数据中要查找的内容;

action:指要操作的指令。

{}可以对一系列指令进行分组,不一定要出现。pattern要表达的正则表达式要用斜杠括起来。

通常,awk是以文件的一行为处理单位,每接收一行就执行相应的命令。

 

三种调用方法:

  1. 命令行:

    awk [-F field-separator] \'commands\' input-files

    field-separator:域分隔符,指文件每一行中每个域分隔的符号,默认为空格。

  1. shell脚本:

    将所有awk命令插入到一个文件,并使awk程序可执行,awk命令解释器作为脚本的首行。

    #!/bin/awk

  2. 将所有awk命令插入到单独文件,调用:

    awk –f script-file input-files

    -f选项加载script-file中的awk脚本。

     

 

awk执行流程:

 

示例:

  1. awk \'{print $1}\' access.201204

    意思:显示access.201204文件的每一行中的第一个$1数据,$1为每一行中空格相隔的第一个字串,$2为第二个字串,以此类推。

    如果将print $1保存在文件内,假设保存为test1,则可以写成:awk –f test1 access.201204

  2. awk \'$1~/sina/{print $1}\' e20120706

    意思:$1字串匹配sina字符串时,则执行print $1。

  3. awk \'{ip[$1]++} END { for (i in ip) {print i,ip}}\' access.2028 | less |sort -nr

    意思:将每行$1作为ip数组下标,进行重复计数统计,完后再循环ip数组,显示下标和统计结果,并按降序排列。

 

内置变量:

 

操作符:

 

常用的字符串函数:

 

控制流和循环:

 

数组输出:

 

参考笔记:

http://linux.vbird.org/somepaper/20090427-learn_sed_and_awk.pdf 

以上是关于awk 命令行的主要内容,如果未能解决你的问题,请参考以下文章

awk从入门到入土(23)awk内置变量ARGCARGC--命令行参数传递

linux awk用法(主要为命令行)

awk从入门到入土(20)awk解析命令行参数

awk从入门到入土(20)awk解析命令行参数

利用awk命令提取其中一列包括特定字符的所有行怎么办

awk 命令行