awk是一种非常优秀的文本处理语言,尤其对于日志分析及报表处理。本文将对自己学习awk的一些经验分享给大家。
初识awk
$ awk '{print}' 2012_02_02.request.log ---- 该命令将2012_02_02.request.log文件中的内容输出。
$ awk '{print $0}' 2012_02_02.request.log ---- 与上述命令完全一样,用于输出该文件的内容。$0命令表示当前行。
$ awk '{print ""}' /etc/passwd ---- 输出空格
$ awk '{print ”helloworld"}' /etc/passwd ---- 将在每行都输出helloworld
多个字段
awk善于处理分成多个逻辑字段的文本,而且可以方便的引用到分解完后的各个字段的数据。
$ awk -F":" '{print $1}' /etc/passwd ---- 按照:进行分割,并输出分割后的第一个值;
-F ---- 表示按照某个字符进行分隔;
$ awk -F":" '{print $1 $3}' /etc/passwd ---- 按照:进行分割,输出分割后的第1个值及第3个值,值与值之间是相连的。
$ awk -F":" '{print $1" "$3}' /etc/passwd ---- 按照:进行分割,输出分割后的第1个值及第3个值,而且值与值之前有空格分隔。
$ awk -F":" '{print "username:" $1 "\tuid:"$3}' /etc/passwd ---- 按照:进行分隔,输出第1个值及第3个值,在输出时加入一些内容。
外部脚本
当然有时直接在屏幕上输入多行命令会较为复杂,我们可以通过编程的方式将awk的一些命令集写在一个文件中通过外部调用的方式来完成多条复杂命令的执行,完成相关的功能。外部脚本的引用通过:
$ awk -f ****.awk myfile.data
-f表示调用外部脚本并执行。
BEGIN和END块
awk会执行每个编程块一次,当然有时候在处理文本之前可能需要先对文本进行处理,可以将预先需要的处理放置在BEGIN块中;或者在文本处理完成后,需要输出统计结果,则可以将输出结果放置在 END块中。如
BEGIN { END {
FS=":"; print count;
} }
规则表达式 -- / /
awk允许使用规则表达式,根据规则表达式是否匹配当前行来选择执行独立代码块。
/root/ '{print}' ---- 当该行中含有root这个关键词时才匹配输出;
它还提供了一些特殊的匹配方式,如"==", "<", ">", "<=", ">=", "!=", "~", "!~"
其中"~"与"!~"分别表示匹配与不匹配。即运算符左边的变量是否包含右边规则表达式中的值。
$ awk -F":" '{if($1 ~ /root/) print}' /etc/passwd ----表示的是按:分隔后的第一个字符串中包含root字符串的再输出
$ awk '{if($0 == /^$/) ++count} END {print count}' /etc/passwd ---- 输出该文件中含有多少个空白行。
字段分隔符 -- FS
在前面介绍过程中,有了解到可以通过-F":"的方式来设置当前字段的分隔符。当然也可以采用其它的方式来进行设置,如:
FS = ":" ----通过FS也可以方便的进行设置;
FS = "\t+" ----通过FS配置规则表达式的方式也可以进行分隔,如上述即通过一个或多个tab空白进行分割。
字段数量 -- NF
对于一个统计文本,由于其中按照某个分割符分开后,其字段数并不确定,通过NF命令即可统计出每行含有多少个字段数量。
$ awk '{print NF}' /etc/passwd ---- 输出该文本中所包含的每条记录按空格分割后的字段数量;
记录号 -- NR
包含当前记录的编号(将第一条记录算做记录号1)。NR还会告诉你当前的行号。
$ awk '{if(NR > 1 && NR <=20) print}' /etc/passwd ---- 输出该文本中2-20行的所有记录。
分享到:
相关推荐
Sed AWK编程指南Sed AWK编程指南Sed AWK编程指南
linux awk 初级编程
shell、awk编程教材
awk编程语言入门--awk是linux下的一个命令,他对其他命令的输出,对文件的处理都十分强大,其实他更像一门编程语言,他可以自定义变量,有条件语句,有循环,有数组,有正则,有函数等。
Awk是一种非常好的语言,同时有一个...在本系列(共三篇文章)的第一篇文章中,DanielRobbins 将使您迅速掌握 awk编程技巧。随着本系列的进展,将讨论更高级的主题,最后将演示一个真正的高级awk 演示程序。 捍卫 awk
sed命令和awk编程教程,理论与示例相结合。
GAWK-Effective AWK Programming - GNU Awk编程经典。电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍。
awk编程语言,每位运维者必备的技术。这本书对awk的编程模型、基本语法有简单明了的介绍,在进行数据处理、文本处理、报表、试验算法方面的应用也有很多好的实例。
Effective AWK Programming:Awk 编程的经典著作
教您有关awk语言以及如何有效使用它的知识。 还介绍了awk的GNU实现gawk。
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 ...
awk编程,都是经过实际操作得出的,其中包含awk和shell混合编程
Effective awk Programming, 4th Edition[awk高效编程4版] 非扫描版,非常清晰
awk学习笔记,包括awk编程的基本命令语法等信息,是学习awk编程的好帮手
在UNIX的Shell里经常用到的AWK系列命令的详细例子介绍.
Effective.Awk.Programming.3rd 高效awk编程,高清文字版
linux下的awk编程,帮助大家写脚本。
不用介绍了,懂的就下,用到的就下,想看的也下
绝对给力的转换器,值得收藏&拥有,转换速度也给力. --"好工具要分享,必须的." 备注: 收录了pdg2.dll扩展.
sed awk高级编程案例,大量的sed awk等命令的实现功能对比,让你使用shell更好的融汇贯通