文本数据处理之AWK 图解

Linux大全评论693 views阅读模式

一、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 "";

2、printf的使用格式

printf format, item1, item2, ...

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

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

每一个格式对应一个字段

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

3、format

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

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

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

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

④ %f: 显示浮点数;

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

⑥ %s: 显示字符串;

⑦ %u: 无符号整数;

⑧ %%: 显示%自身;

4、修饰符

① N: 显示宽度;

② -: 左对齐;

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

三、awk的变量

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

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

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

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

ORS:Output Row Separator,行分隔符;

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

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

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

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

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

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

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

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

3、用户自定义变量

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

① 脚本中赋值变量

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

企鹅博客
  • 本文由 发表于 2020年9月15日 09:31:35
  • 转载请务必保留本文链接:https://www.qieseo.com/159181.html

发表评论