报告生成器-awk命令

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

格式:

awk [options] ‘script‘ file1 file2,...

awk [options] ‘PATTERN {action}‘ file1 file2,...

print,printf

awk的输出:

一、print

print的使用格式:

print item1,item2,...

要点:

  1. 各项目之间使用逗号隔开,而输出时则以空白字符分隔;
  2. 输出的item可以为字符串或数值、当前记录的字段(如$1)、变量或awk的表达式;数值会先转换为字符串,而后在输出;
  3. print命令后面的item可以省略,此时其功能相当于print $0,因此,如果想输出空白行,则需要使用print "";

例子:

#awk ‘BEGIN {print "line one\nline two\nline three"}‘

awk -F:‘{print $1,$3}‘ /etc/passwd

二、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环境变量及其值得关联数组;

    如:awk ‘BEGIN{print ENviron["PATH"]}‘

  3. 用户自定义变量

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

    1)在脚本中赋值变量

    在gawk中给变量赋值使用赋值语句进行,例如:

    awk ‘BEGIN {var="variable testing";print var}‘

    2)在命令行中使用赋值变量

gwak命令也可以在“脚本”外为变量赋值,并在脚本中引用。例如,上述的例子还可以改写为:

awk -v var="variable testing" ‘BEGIN{print var}‘

三、printf

printf命令的使用格式:

printf format,item1,item2,...

要点:

  1. 其与print命令的最大不同是,printf需要指定format;
  2. format用于指定后面的每个item的输出格式;
  3. printf语句不会自动打印换行符;\n

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

%c:显示字符的ASCII码;

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

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

%f:显示浮点数;

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

%s:显示字符串;

%u:无符号整数;

%%:显示%自身;

修饰符:

N:显示宽度;

-:左对齐;

+:显示数值符号;

例子:

#awk -F :‘{printf "%-15s %i\n",$1$3}‘ /etc/passwd

四、输出重定向

print items > output-file

print items >> output-file

print items | command

特殊文件描述符:

/dev/stdin:标准输入

/dev/sdtout:标准输出

/dev/stderr:错误输出

/dev/fd/N:某特定文件描述符,/dev/stdin就相当于/dev/fd/0;

例子:

#awk -F : ‘{printf "%-15s %i\n",$1,$3 > "/dev/stderr"}‘ /etc/passwd

六、awk的操作符:

1. 算术操作符:

-x: 负值

+x: 转换为数值;

x^y:

x**y: 次方

x*y: 乘法

x/y:除法

x+y:

x-y:

x%y:

2. 字符串操作符:

只有一个,而且不用写出来,用于实现字符串连接;

3. 赋值操作符:

=

+=

-=

*=

/=

%=

^=

**=

++

--

需要注意的是,如果某模式为=号,此时使用/=/可能会有语法错误,应以/[=]/替代;

4. 布尔值

awk中,任何非0值或非空字符串都为真,反之就为假;

5. 比较操作符:

x < y True if x is less than y.

x <= y True if x is less than or equal to y.

x > y True if x is greater than y.

x >= y True if x is greater than or equal to y.

x == y True if x is equal to y.

x != y True if x is not equal to y.

x ~ y True if the string x matches the regexp denoted by y.

x !~ y True if the string x does not match the regexp denoted by y.

subscript in array  True if the array array has an element with the subscript subscript

7. 表达式间的逻辑关系符:

&&

||

8. 条件表达式:

selector?if-true-exp:if-false-exp

if selector; then

if-true-exp

else

if-false-exp

fi

a=3

b=4

a>b?a is max:b ia max

9. 函数调用:

function_name (para1,para2)

七、awk的模式:

awk ‘program‘ input-file1 input-file2 ...

其中的program为:

pattern {action}

pattern {action}

...

  1. 常见的模式类型:

    1)Regexp:正则表达式,格式为/regular expression/

    2)expression:表达式,其值非0或为非空字符时满足条件,如:$1~/foo/或$1 == "xxx",用运算符~(匹配)和!~(不匹配)。

    3)Ranges:指定的匹配范围,格式为pat1,pat2

    4)BEGIN/END:特殊模式,仅在awk命令执行前运行一次或结束前运行一行

    5)Empty(空模式):匹配任意输入行;

时间: 2024-08-24 10:32:04

报告生成器-awk命令的相关文章

Awk报告生成器

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

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命令——报告生成工具

日期: 2015年09月15日 awk命令:报告生成工具 awk的作用: awk是一种编程语言,(awk的名源自该程序的作者们名字的首字母 a.k.a Aho, Weinberger, Kernighan)用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin). 一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能, 是linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用. awk的工作原理: awk 'BE

awk——报告生成器

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

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:设置默认换行符

awk命令用法及编程

awk(gawk):报告生成器,格式化文本输出:awk,gawk 基本用法:gawk [options] 'program' FILE ... program: PATTERN{ACTION STATEMENT};可以有多个,语句之间用分号分隔 print,printf 选项: -F:指明输入数据时用到的字段分隔符 -v var=value:自定义变量: 变量: 1)内建变量 FS:input field seperator(输入字段分隔符,默认为空白字符) #awk -v FS=':' '{p

linux awk命令详解(转)

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

linux awk命令详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK