awk工具的使用

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
awk命令语法格式:

awk?[options]?‘scripts‘?filename
awk?[options]?‘pattern?{action}‘?filename

options是awk的支持的选项,譬如-F -v等; scripts是其处理脚本,包含模式pattern和动作action(模式和动作的关系一般为,模式负责确定有效字段,动作负责对其处理) .
常用选项:

-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

实例:
1、截取文档中的某个段:

-F 选项的作用是指定分隔符,如果不加-F指定,则以空格或者tab为分隔符。 Print为打印的动作,用来打印出某个字段。$1为第一个字段,$2为第二个字段,依次类推,有一个特殊的那就是$0,它表示整行。

注意awk的格式,-F后紧跟单引号,然后里面为分隔符,print的动作要用 { } 括起来,否则会报错。print还可以打印自定义的内容,但是自定义的内容要用双引号括起来。

2、匹配字符或者字符串:

这个跟sed用法类似,但是没有颜色显示,这点肯定没有sed用起来方便。但是awk有比sed更强大的匹配功能。

上面这个例子,是让第一段去匹配字符‘o’,‘~’是匹配的意思。
awk命令还可以多次匹配:

3、条件操作符:

awk中是可以用逻辑符号判断的,比如 ‘==’ 就是等于,也可以理解为 ‘精确匹配’ 另外也有 >, ‘>=, ‘<, ‘<=, ‘!= 等等,值得注意的是,在和数字比较时,若把比较的数字用双引号引起来后,那么awk不会认为是数字,而认为是字符,不加双引号则认为是数字。

在上面的例子中,本想把uid大于等于500的行打印出,但是结果并不是我们的预期,这是因为awk把所有的数字当作字符来对待了,就跟之前提到的 sort 排序原理一样。

!= 为不匹配,除了针对某一个段的字符进行逻辑比较外,还可以两个段之间进行逻辑比较:

另外还可以使用 && 和 || 表示 “并且” 和 “或者” 的意思:


4、awk的内置变量,awk常用的变量有:OSF、NF和NR。OFS与-F选项功能类似,用阿里定义分隔符,但是它是用在输出时定义。NF表示用分隔符分隔后一共多少行,NR表示行号。
1)OFS用法实例:

高级点的用法:

2)NF的用法:


NF 是多少段,而$NF是最后一段的值。
3)NR的用法:

我们可以使用NR作为判断条件:

还可以配合段匹配一起使用:

5、awk中的数学运算:
1)awk更改段值:

2)对各个段的值进行运算:

3)计算某个段的总和:

这里的END要注意一下,表示所有的行都已经执行,这是awk特有的语法,其实awk连同sed都可以写成一个脚本文件,而且有他们特有的语法,在awk中使用if判断、for循环都是可以的。

原文地址:http://blog.51cto.com/3069201/2062236

时间: 2024-11-06 03:42:18

awk工具的使用的相关文章

Shell脚本编程与sed,awk工具的使用--9月15日课程作业

一.shell程序的运行原理 1.脚本 脚本或程序源文件是一种文本文件,将文本文件转换成机器指令有两种转换方式: 编译执行:预处理-->编译-->汇编-->链接:事先完成,结果:二进制程序文件 例如:C, C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: 例如:  Python:程序控制结构,调用编程库完成程序编写: 库文件:功能模块,在编程中可调用: Bash:调用机器上命令程序文件进行程序编写: 外部命令:各应用程序提供: 2.原理 当shell运行一个程序时,会

grep,sed,awk工具的使用

grep过滤特定的行 1.把包含'halt'的行以及这行下面的两行都打印出来. [[email protected] ~]# cp /etc/passwd /tmp/ [[email protected] ~]# cd /tmp/ [[email protected] tmp]# grep -A2 'halt' passwd halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x

鸟哥书籍awk工具学习

awk工具 awk也是一个很好的数据处理工具.相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个字段来处理.因此,awk相当适合处理小型的数据.awk通常的运行模式是这样的: [[email protected] opt]#awk '条件类型1{动作1}条件类型2{动作2}' filename awk后面接两个单引号并加上大括号{}来设置想要对数据进行的处理动作.qwk可以处理后续接的文件,也可以读取来自前个命令的standardoutput.但如前面说的,awk主要是处理每一

【转载】 AWK 工具简明介绍

有一些网友看了前两天的<Linux下应该知道的技巧>希望我能教教他们用awk和sed,所以,出现了这篇文章.我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭.况且,AWK是贝尔实验室1977年搞出来的文本出现神器,今年是蛇年,是AWK的本命年,而且年纪和我相仿,所以非常有必要为他写篇文章. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Nam

【转载】GAWK AWK工具使用手册

IBM GAWK入门资料http://www.ibm.com/developerworks/cn/education/aix/au-gawk/ AWK 是什么? 最简单地说,AWK 是一种用于处理文本的编程语言工具.AWK 实用工具的语言在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法.在最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令.该实用工具扫描文件中的每一行,查找与命令行中所给定 内容相匹配的模式

2018.4.27 六周第三次课 (awk工具)

awk工具介绍 awk也是流行的编辑器,针对文档中的行来操作,一行一行的操作: awk具备sed的所有功能,而且更强大. awk截取文档中的某个段落,示例如下: -F选项的作用是指定分隔符,如果不加-F选项,以空格或者tab为分隔符. print为打印的动作,用来打印某个字段.$1为第一段,$2为第二段,$0表示整行. 示例1: [[email protected] ~]# mkdir awk #创建个awk目录[[email protected] ~]# cp /etc/passwd awk/

Shell脚本 (四)正则表达式 grep sed awk 工具

正则表达式定义正则表达式,又称正规表达式.常规表达式是使用单个字符串来描述.匹配一系列符合某个句法规则的字符串·正则表达式组成普通字符大小写字母.数字.标点符号及一些其他符号元字符在正则表达式中具有特殊意义的专用字符·基础正则表达式示例查找特定字符利用中括号[]来查找集合字符查找行首^与行尾字符$查找任意一个字符.与重复字符查找连续字符范围{}·基础正则表达式的常见元字符^.$...\..[ ].[^ ].[n1-n2].{n}.{n,}.{n,m}·####查找特定字符####n--表示显示行

详解 awk 工具的简单使用方法

来源:jarly https://my.oschina.net/jarly/blog/898144 [转注]:awk 是一个强大的文本分析工具,本教材只是简单的入门.结合Linux其它文件操作,shell脚本等强大的会爆表,经常接触文件分析的同学建议深入学习. 当你第一次拿起双手在电脑上使用 awk 命令处理一个或者多个文件的时候,它会依次读取文件的每一行内容, 然后对其进行处理,awk 命令默认从 stdio 标准输入获取文件内容, awk 使用一对单引号来表示 一些可执行的脚本代码,在可执行

9.6-9.7 awk工具

awk命令 awk是什么 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用.awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作.如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被