关于awk
awk是一个报告生成器,他拥有强大的文本格式化的能力。
其实我么可以利用awk命令将一些文本整理成我们想要的样子,比如把一些文本整理成“表”的样子。然后打印出来,至于格式化能力会举例出来,自然会明白。
awk是有Alfred Aho,Peter Weinberger好人Brian Kernighan 这三人创造的,awk由这三个人的姓氏的首个字母组成。
awk早期是在unix上实现的,所以,我们现在在linux中所使用的AWK其实是gawk,也就是GNU awk,简称gawk,awk还有一个版本,New awk,简称nawk,但是linux中最常用的还是gawk。
awk其实是一门编程语言,它支持调节判断,数组,循环等功能。所以,我们也可以把awk理解成一个脚本编译解释器。
grep,sed,awk被称为linux中的“三剑客”。
我们总结一下这三个“剑客”的特长。
grep更适合单纯的查找或匹配文本。
sed 更适合编辑匹配到的文本。
awk更适合格式化文本,对文本进行较复杂格式处理。
awk基础
awk基本语法:awk[options] ‘Patter{Action}’ file
其中Action指的就是动作awk擅长文本格式化,并且将格式化以后的文本输出,所以awk最常用的动作就是print和printf,
先举个简单的例子不用[options],也不知道pattern,直接用最简单的action。如下:
上图我们只是使用了awk执行一个打印的动作,将testd文件内容打印出来。
在换个例子:
上图中没有使用option和pattern,上图中的awk‘{print$5}’ 表示输出df的信息的第5列,$5表示将当前行按照分隔符分割后的第5列,不指定分隔符时,默认使用空格作为分隔符,你一定发现了上述信息用的空格不止有一个,而是连续多个空格,awk自动将连续的空格理解为一个分割符了。
awk是逐行处理的,逐行处理就是说,当awk处理一个文本时,会一行一行进行处理,处理完当前行,在处理下一行,awk默认以“换行符”为标记,识别每一行,也就是说,awk跟我们人类一样,每次遇到“回车换行”,就认为是当前行的结束,新的一行的开始,awk会按照用户指定的分割符去分割当前行,如果没有指定分隔符,默认使用空格作为分隔符。
我们也可以一次输出多列,使用逗号隔开要输出的多个列,如下,一次性输出第一列和第二列
同理,也可以一次性输出多个指定的列,如下
我们发现第一行并没有第5列,所以没有输出任何文本,而第二行有第5列,所以输出了。
未完待续!
原创文章,作者:eedsxb,如若转载,请注明出处:http://www.178linux.com/86397
评论列表(1条)
求继续更新!!!