awk——报告生成器

文本处理三剑客——grep,awk,sed;grep是基于pattern过滤输出,有三种模式,grep,egrep以及fgrep;sed则是一种流编辑器,进行插入删除,常用于进行文本中的替换操作;而awk的功能就更加强大了,作为一种格式化文本工具,awk通过分隔符控制文本,awk默认的分隔符是空格;awk还可以通过pattern匹配按行进行遍历,通过算术表达式对行进行排查,还可以for,while,continue,break等控制语句找到符合条件的信息进行输出;他还可以对输出的结果进行修饰采用printf的输出方式,控制格式;

awk其实就是gawk,他是通过从gawk链接过来的一个命令,使用man awk时出现的也是gawk的内容;这是因为以前的人一直使用awk成为了习惯,所以特地配置了这个命令的链接;

awk基本格式

awk [options] ‘program‘ file ...

program:pattern{action statements;...}

pattern:pattern在awk中有很多种类,其中典型的是在执行awk命令时首先需要执行的        pattern还可以执行正常环境下的pattern语法,不过需要用“//”包含;

action:print,printf两种,print作为正常的输出,输出匹配的字段,awk命令是一种基      于分隔符的形式来操作的命令,会将当前字段分隔为$1,$2,$3...$NF;由print来输出;printf      则可以在输出字段的同时,对字段进行格式规整的操作;

awk执行流程:

①首先执行BEGIN{}语句段,一段用于在数据前方起到一个开头的作用;

②读取指定文件中的每一行数据,按行遍历,根据我们提供的pattern值进行匹配,若想输出匹配   到的pattern数据,则print本身,不需要加字段$1,$2这些,如awk ‘$3>500{print}‘ /filepath;这   样就只输出$3这个字段中大于500的行数据了;

③执行END{}语句段;

awk:

常用选项:

-F:指定字段分割符;

-v:手动设置变量;var=value;

1.awk中的变量:

awk中的变量有两种,一种是自建变量,即用-v选项指定变量名,或者在语句块中直接声明使用;

另一种则是awk这个命令中的内建变量了;

内建变量:

FS:相当于-F选项的设置输入分隔符;

如:使用FS指定“:”作为字段分隔符;

OFS:设置输出分隔符,在输出的数据进行分隔,默认是空白字符;

如:

NF:字段数量,$NF作为输出的最后一个字段,而NF则输出这个字段的序列号;

如:$NF

NF

NR:awk遍历行时输出每行的行号;在END{}语句块使用时则输出awk遍历的这个文件的总行数;可    以将两个文件合起来一起统计行数,只要在文件路径处再加一个路径即可;这样统计出来的就是总    的行数;

如:

FNR:file number of record,分别统计各个文件的行数,行号;这样统计出来的就是两个文件    分别的行数

FILENAME:输出当前处理的文件名;

如:

ARGC:输出命令行中参数的个数;

如:

该段命令中的参数是awk,以及后面的文件路径

ARGV:以数组的形式保存命令行中参数的内容;

如:

2.printf:格式化输出结果

printf这个action,除了具备print的功能之外,他还可以为每个输出的量固定格式,固定其字符串长度,左右对齐,显示整数或浮点数等;

printf "format",item,item

format必须符合要求,且每一个item都需要对应一个模式,即一种format,format需要用双引号括起来;

format的格式与类型:

以%开头,后跟这个item类型

格式符:

%c:显示字符的ASCII码;

%d,%i:显示十进制整数;

%f:显示浮点数字;

%e,%E:使用科学计数法显示数字;

%g,%G:使用科学计数法显示浮点数字;

%s:显示字符串;

%u:显示无符号整数;

%%:显示%自己;

常用的是%s,%d等;当需要指定字符串长度时,直接在%后加字符串长度,如%10s,表示10个字节字符串;

-:表示向左对齐,默认是向右对齐;

+:显示数字的正负符号;

如%-10s,%+10s

示例:

3.操作符

①算术操作符

如 +,-,*,^,/,%

-x:将正数转化为负数;

+x:将字符串转化为数值;

如:x%y

②赋值操作符:

=,+=,-=,*=,/=,%=,^=

++,--

用法同上

③比较操作符:

>,>=,<,<=,==,!=

如:找到UID大于500的用户信息

④模式匹配操作符:

~:左边的字符串是否与右边的pattern匹配;

!~:左边的字符串是否与右边的pattern不匹配;

如:从$NF找到匹配nologin的行

⑤逻辑操作符:

与(&&),或(||),非(!)

可以将匹配信息相与或操作,提炼出想要的结果;

如:找到UID大于500小于1000的用户信息

⑥条件表达式:

condition(selector)?if-true-expression:if-false-expression

如:当满足UID大于500小于1000时,将变量user值设为yes,否则设为no

4.pattern

①空pattern:所有的行统一遍历,不存在匹配值;

②设置pattern,需要用“//”隔开;

如:

③设置pattern范围:/pattern1/,/pattern2/

如:找到开头为w,到开头以n的用户信息

④BEGIN{}

BEGIN{}语句块只有在awk命令执行之前才会实现;通常用于输出结果的开头;

如:设置开头的user UID标题

⑤END{}

END{}语句块只有在awk命令执行结束后才会实现,通常作为这一次命令的总结;

如:END语句块在尾部生成隔开符号*,并且计算总行数;

5.控制语句

如for,while,next,do-while,if-else等;

for循环:

语法:for (expr1;expr2;expr3) statement

expr1:给变量设置初值,如i=1;

expr2:给变量she‘zhi范围,如i<100;

expr3:执行递增递减操作,如i++,i--;

如:使用for循环遍历一行,读取一行中每一组分隔字段的长度,使用length内置函数;

while循环:为真则进入循环,为假则退出循环;

语法:while (condition) statement

如:

do-while循环:原理同while一样,不同在于,其是执行一遍再判断是否满足要求,若不满足再退出;

语法:do statement while (condition)

如:

next:当满足条件时则提前退出本次循环,进入下一次循环;

如:

break:当满足条件时则退出循环;

如:

continue:当满足条件时,则直接跳过本次循环,进行下一次循环;

同上;

6.数组:

awk中的数组有两个特性

①当数组本身不存在,却引用这个数组时,会将数组的值设为空字符串,相当于0;

②数组可以用字符串来表示,但字符串需要加双引号,如a["letter"];

引用数组

如:

查看一个设定好的文件中的单词的个数,使用for循环的s in array的形式:

如:

时间: 2024-10-03 23:29:01

awk——报告生成器的相关文章

Awk报告生成器

一.awk概念以及使用格式 Awk是一个强大的报告生成器,awk自身具有遍历的功能,支持条件循环,就是一个编程语言,awk 的输出  1.print命令 后接各项目使用逗号分割,而输出时则使用输出符分割.2.输出是个字符串或数值,当记录的字段.变量或awk的表达式:数值会被隐式转换为字符串后输出.3.print后面如果省略相当于$0 输出空白print"".4.显示当前系统上.如果print后接选项没有逗号只有空格输出的结果连载一起{print $1 $7} 1.Awk 的变量分为内置

awk: 报告生成器 简单用法

1:tail -5  /etc/fstab | awk '{print $2,$4}' 打印/etc/fstab 文件里后五行的第2和第4段内容 [[email protected] temp]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Dec 30 06:43:45 2015 # # Accessible filesystems, by reference, are maintained under '/dev/di

awk:报告生成器

awk:报告生成器 格式化后显示信息 语法: awk [options] 'script' file1 file2, ... awk [options] 'PARTTERN { action }' file1 file2, ... 最常见的action:print,printf awk的基本特征: a.每一次取一行 b.根据指定的分隔符(不指定是位空白字符)将该行切割位列,使用$0(整行),$1,$2,$3...(第一列,第二列,...) c.可以指定行号,列号,切割符,操作后分隔符 案例: c

文本处理三剑客之awk(报告生成器)

文本处理三剑客之awk(报告生成器) awk是一款强大的报告生成器,不同于sed和grep,它的侧重点是如何把文本信息更好的展示出来,常用与统计和格式化输出.awk相当于微型的shell,有着自己一套语法结构,例如:循环结构,数组,条件判断,函数,内置变量等功能. awk在我认为简直就是文本处理时打劫放火一大利器. 例如取出/etc/passwd中的第一列. [root@CentOS6 ~]# awk -F: '{print $1}' /etc/passwd root bin daemon ad

报告生成器-awk命令

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯.彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识.awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk ) 格式: awk [options] 'script' file1 file2,... awk [

Linux报告生成器工具awk

awk:根据输入的信息格式化后显示出来 1.1.awk基本用法 awk [options] 'script' file1,file2,.... 或 awk [options] 'PATTERN [ACTION]' file1,file2.... 示例:awk '{print $1}' test.txt options: -F:定义分隔符 示例awk -F: 以冒号为分隔符 1.2.awk内置变量 (1)记录变量 FS:设置默认分割字符  示例awk -F: 以冒号为分隔符 RS:设置默认换行符

1-27 awk 基本使用

大纲: 色彩: awk基本使用 ##################################################### 一.色彩:shell中,设置输出文本色彩(前景色,背景色) 在Shell中,可以给输出的字体设置颜色(前景色.背景色) 颜色 黑色 红色 绿色 黄色 蓝色 紫色 蓝色 白色 字体编码 30 31 32 33 34 35 36 37 背景编码 40 41 42 43 44 45 46 47 1.字背景色.字体颜色.字体效果可单独使用也可组合使用前后顺序没有关系

awk用法

grep:文本过滤器, grep "pattern" input_file .... sed: 流编辑器: sed "command/PATTERD/" awk:报告生成器.能够将输入的信息格式化之后显示:包括nawk版本,gawk版本 用法: awk [option] 'script' file1 file2, ... awk [option] 'PATTERN {action}' file1, file2. ... print, printf 1 [email 

awk学习随常记录

回顾:字符串处理 数组: 数组 : declare -a index: 0- 关联数组 : declare -A 编程:数据结构和算法 字符串处理: 切片.查找替换.查找删除.变量赋值 GUN awk: 文本处理三工具: grep ,sed ,awk grep:grep.egrep .fgrep:文本过滤工具:pattern sed:行编辑器 模式空间.保持空间 awk:报告生成器,格式化文本输出; AWK: aho,weinberger, kernigha 命名就用三个人名字的首字母 awk主