Linux awk 使用_第1张图片



blob.png


Linux awk 使用_第2张图片

1awk读入第一行内容

2、判断是否符合模式中的条件NR<3

   如果匹配,则执行对应的动作print NR $1

   如果不匹配,继续读下一行

3、继续读下一行

4、直到读到最后一行


Linux awk 使用_第3张图片

   blob.png

blob.png

blob.png

Linux awk 使用_第4张图片

默认情况:一行就是一个记录,当然如果修改也行分隔符就不一样了。


内置变量:

Linux awk 使用_第5张图片

正则表达式:

Linux awk 使用_第6张图片

运算符:

Linux awk 使用_第7张图片

Linux awk 使用_第8张图片

其实在awk看来,文件从头到尾一段连续的字符串,只是中间有一些\n(回车换行符),RS为了

方便人查看,就把RS值设置为\n,当然可以人为修改,如上图

Linux awk 使用_第9张图片

+表示:多个一样的,例如多个空格

blob.png

两种写法


Linux awk 使用_第10张图片

这个区别在哪??? 为什么显示不同,大神来解答下。。。


blob.png

当然-F后面[],可加可不加,如果就以一个分隔符的话

 

x重复m             /cool{5}/

x重复至少m    /cool{2,}/

x重复至少m次,但不超过n        /cool{m,n}/

注意:cool加不加括号

/cool{5}/ 表示coo再加上5lcoolllll

/(cool){5}/ 表示cool匹配5个,cool cool cool cool cool

以上必须要加参数--posix或者--re-interval


blob.png

首先以“:”号分隔字段,再查找第一个字段符合字符”o”出现至少一次,不超过2次的,最后

打印行号,第一个字段,最后一次字段。

取反!~

blob.png

1、首先以“:”号,分隔字段,然后同时满足行号=1,且第一个字段中包含的字符”o”出现至少一次,

不超过2次的,打印行号,第一个字段

2、行号1或者行号2,打印第一个字段。

blob.png


blob.png

范围从第1行到第3


Linux awk 使用_第11张图片

awk不能直接使用行号作为范围,因为awk具有内置变量NR来记录


范围模式

awk ‘/start pos/,/end pos/ {print $0}’ awk1.txt

awk ‘/start pos/,NR==xxx {print $0}’ awk1.txt


blob.png

这样就只能取第一个条件了

一个开始和一个结束 必须要能确定行

这个=2 <=3 确定不了

所以只按前面的=2取了第二行


blob.png

Linux awk 使用_第12张图片


Linux awk 使用_第13张图片

blob.png

没有文件,awk依旧可以处理BEGIN模式下的操作块


blob.png

BEGINEND模块后面的语句分隔用;

print的多个参数之间以逗号分隔


blob.png


Linux awk 使用_第14张图片

blob.png

统计文件里面的空行


Linux awk 使用_第15张图片

b=1就是验证下后面用什么符号,BEGIN,END后面的动作里用分号

 

a=a+1

a++

 

a=a+2

a+=2

 

a+=$0

 

命令赋值 -F

blob.png

Linux awk 使用_第16张图片

布尔表达式,为真才执行