文本数据处理之AWK 图解

企鹅博客
企鹅博客
企鹅博客
28700
文章
0
评论
2020年9月15日09:31:35 评论 4 views 1651字阅读5分30秒

一、awk简介

awk是一种优良的文本处理工具。它不仅是 linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。 awk提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。最简单地说, awk 是一种用于处理文本的编程语言工具。

awk与grep,sed是处理文本数据必不可缺且必须熟练的处理工具。

相关阅读:

sed与awk常用功能 http://www.linuxidc.com/Linux/2013-06/86099.htm

Linux下shell编程常用grep\awk\sed语法 http://www.linuxidc.com/Linux/2013-07/87047.htm

Linux下Shell编程——awk编程 http://www.linuxidc.com/Linux/2013-06/85527.htm

文本处理工具awk详解 http://www.linuxidc.com/Linux/2013-05/84248.htm

Linux awk命令使用详解 http://www.linuxidc.com/Linux/2012-12/77082.htm

grep : 文本过滤器

sed:流编辑器

awk : 报告生成器

二、awk的输出

awk其输出格式有两种:print和printf

print是简单的显示命令,printf 是格式化显示命令

1、print的使用格式

print item1, item2, ...

① 各项目之间使用逗号隔开,而输出时则以空白字符分隔;

② 输出的item可以为字符串或数值、当前记录的字段(如$1)、变量或awk的表达式;数值会先转换为字符串,而后再输出;

③ print命令后面的item可以省略,此时其功能相当于print $0, 因此,如果想输出空白行,则需要使用print "";

文本数据处理之AWK 图解

2、printf的使用格式

printf format, item1, item2, ...

① 其与print命令的最大不同是,printf需要指定format;

② format用于指定后面的每个item的输出格式;

每一个格式对应一个字段

③ printf不会自动打印换行符;\n

文本数据处理之AWK 图解

3、format

format格式的指示符都以%开头,后跟一个字符;

① %c: 显示字符的ASCII码;

② %d, %i:十进制整数;

③ %e, %E:科学计数法显示数值;

④ %f: 显示浮点数;

⑤ %g, %G: 以科学计数法的格式或浮点数的格式显示数值;

⑥ %s: 显示字符串;

⑦ %u: 无符号整数;

⑧ %%: 显示%自身;

4、修饰符

① N: 显示宽度;

② -: 左对齐;

文本数据处理之AWK 图解

③ +:显示数值符号,默认为右对齐;

三、awk的变量

1、awk内置变量之记录变量:

FS : field separator,读取文件本时,所使用字段分隔符;

RS : Record separator,输入文本信息所使用的换行符;

OFS : Output Filed Separator,文件分隔符;

ORS:Output Row Separator,行分隔符;

文本数据处理之AWK 图解

2、awk内置变量之数据变量:

NR: The number of input records,awk命令所处理的记录数;如果有多个文件,这个数目会把处理的多个文件中行统一计数;

NF:Number of Field,当前记录的field个数;

文本数据处理之AWK 图解

FNR: 与NR不同的是,FNR用于记录正处理的行是当前这一文件中被总共处理的行数;

ARGV: 数组,保存命令行本身这个字符串,如awk '{print $0}' a.txt b.txt这个命令中,          ARGV[0]保存awk,ARGV[1]保存a.txt;

文本数据处理之AWK 图解

ARGC: awk命令的参数的个数;

FILENAME: awk命令所处理的文件的名称;

ENVIRON:当前shell环境变量及其值的关联数组;

3、用户自定义变量

gawk允许用户自定义自己的变量以便在程序代码中使用,变量名命名规则与大多数编程语言相同,只能使用字母、数字和下划线,且不能以数字开头。gawk变量名称区分字符大小写。

① 脚本中赋值变量

在gawk中给变量赋值使用赋值语句进行

继续阅读
weinxin
欢迎加入中国站长博客之家
本站的所有资源都会上传分享到博客之家,希望大家互相学习交流进步。
Nginx+Django+Uwsgi架构部署 linux服务器应用

Nginx+Django+Uwsgi架构部署

随着IT不断发展,用户对网站的体验也越来越高,做为一名Linux运维攻城师,就得学习更多知识,网络、系统、硬件、开发等等知识。 尤其是近期自动化运维的不断发展,更多的基础运维工程师开始不断的升华自己,...
Nginx的ip_hash解析 linux服务器应用

Nginx的ip_hash解析

网络结构描述:1个Nginx(前端)+2个tomcat(后端) 环境:公司内网(网段:192.168.1.0/24),服务器也是分配的内网ip:192.168.1.4(暂定);后端两个tomcat:1...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: