码迷,mamicode.com
首页 > 系统相关 > 详细

Linux awk 使用

时间:2018-01-21 10:55:50      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:修改   直接   使用   字符串   pos   赋值   表示   回车换行   nbsp   

技术分享图片



技术分享图片


技术分享图片

1awk读入第一行内容

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

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

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

3、继续读下一行

4、直到读到最后一行


技术分享图片

   技术分享图片

技术分享图片

技术分享图片

技术分享图片

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


内置变量:

技术分享图片

正则表达式:

技术分享图片

运算符:

技术分享图片

技术分享图片

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

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

技术分享图片

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

技术分享图片

两种写法


技术分享图片

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


技术分享图片

当然-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


技术分享图片

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

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

取反!~

技术分享图片

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

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

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

技术分享图片


技术分享图片

范围从第1行到第3


技术分享图片

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


范围模式

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

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


技术分享图片

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

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

这个=2 <=3 确定不了

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


技术分享图片

技术分享图片


技术分享图片

技术分享图片

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


技术分享图片

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

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


技术分享图片


技术分享图片

技术分享图片

统计文件里面的空行


技术分享图片

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

 

a=a+1

a++

 

a=a+2

a+=2

 

a+=$0

 

命令赋值 -F

技术分享图片

技术分享图片

布尔表达式,为真才执行


Linux awk 使用

标签:修改   直接   使用   字符串   pos   赋值   表示   回车换行   nbsp   

原文地址:http://blog.51cto.com/11755576/2063298

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!