文本数据处理之AWK 图解

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

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

相关阅读:

sed与awk常用功能

Linux下shell编程常用grep\awk\sed语法

Linux下Shell编程——awk编程

文本处理工具awk详解

Linux awk命令使用详解

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中给变量赋值使用赋值语句进行

② 命令行中使用赋值变量

gawk命令也可以在“脚本”外为变量赋值,并在脚本中进行引用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/78b81a971967c2d003553b3d41e6bac7.html