六周第三次课(1月17日)
9.6/9.7 awk

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。


六周第三次课(1月17日)_第三次课

六周第三次课(1月17日)_linux_02


awk -F ":" "{print $1}" test.txt 指定分割f为: 把第一段打印出来

六周第三次课(1月17日)_第三次课_03

$0表示所有的段

六周第三次课(1月17日)_第三次课_04

打印所有的段 相当于cat

六周第三次课(1月17日)_第三次课_05

不指定分割f,默认以空格或空白为分割进行打印

六周第三次课(1月17日)_linux_06

指定分割f,打印多段

六周第三次课(1月17日)_linux_07

指定中间以什么为分割

六周第三次课(1月17日)_第三次课_08

六周第三次课(1月17日)_第三次课_09

把包含oo的打印出来 awk "/oo/"

六周第三次课(1月17日)_第三次课_10

匹配第一段包含oo的行

六周第三次课(1月17日)_第三次课_11

适用正则表达式     且不用加脱义字符

六周第三次课(1月17日)_linux_12

支持多个表达式一起写

六周第三次课(1月17日)_第三次课_13

六周第三次课(1月17日)_第三次课_14

六周第三次课(1月17日)_第三次课_15

打印第三段等于0的行   要写2个=,写1个=是赋值,不写print默认是print $0

六周第三次课(1月17日)_linux_16


打印大于等于1000的

六周第三次课(1月17日)_第三次课_17

加上双引号,以ASCII码计算,会认为这是一个字符串  需求如果是针对数字的不要加双引号

六周第三次课(1月17日)_第三次课_18

第七段不等于!=   字符串要加上双引号

六周第三次课(1月17日)_第三次课_19

比较2个字段 第三段小于第四段  相等的行   

六周第三次课(1月17日)_linux_20

多个判断一起   $3>5并且$3<7

六周第三次课(1月17日)_linux_21

六周第三次课(1月17日)_第三次课_22

六周第三次课(1月17日)_第三次课_23

-F指定分割前的分割f,OFS=指定print时分割后用到的分割f

六周第三次课(1月17日)_第三次课_24

 六周第三次课(1月17日)_linux_25

六周第三次课(1月17日)_第三次课_26

NR 表示行 类似grep -n  NF表示段

六周第三次课(1月17日)_linux_27 六周第三次课(1月17日)_第三次课_28

NR作为判断条件

六周第三次课(1月17日)_第三次课_29

六周第三次课(1月17日)_linux_30

NF作为判断条件

六周第三次课(1月17日)_linux_31

$1$7到$30$7   $NF指最后一段

六周第三次课(1月17日)_linux_32

$1=root  赋值,以:分割打印,赋值为root,赋值之后分割f没了,使用OFS定义分割F

六周第三次课(1月17日)_linux_33

六周第三次课(1月17日)_linux_34

求和第三段所有值的和

六周第三次课(1月17日)_linux_35




扩展

把这里面的所有练习题做一下
六周第三次课(1月17日)_第三次课_36http://www.apelearn.com/study_v2/chapter14.html