Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1734557
  • 博文数量: 391
  • 博客积分: 8464
  • 博客等级: 中将
  • 技术积分: 4589
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 15:12
个人简介

狮子的雄心,骆驼的耐力,孩子的执著!

文章分类

全部博文(391)

文章存档

2023年(4)

2018年(9)

2017年(13)

2016年(18)

2014年(7)

2013年(29)

2012年(61)

2011年(49)

2010年(84)

2009年(95)

2008年(22)

分类: LINUX

2016-11-19 15:32:49

说明蓝色=命令名称

      浅绿=命令参数

      浅蓝=选项

      紫色=目录

      系统环境:  6.2  i686

要求

文件a:  
10/05766798607,11/20050325191329,29/0.1,14/05766798607  
10/05767158557,11/20050325191329,29/0.08,14/05767158557 

文件b:  
05766798607  
05766798608  
05766798609  
通过件a文件b对比,输出结果如下: 
10/05766798607,11/20050325191329,29/0.1,14/05766798607

方法:a) awk -F"[/,  ]" '{if(NR==FNR){a[$1]}else if($2 in a)print $0}' b a


解析:NR为主体行号,FNR为单位文件行号。{if(NR==FNR){a[$1]} b文件中的数据放入数组a,else if($2 in a)print $0}' 主要是对b文件内容的操作,判断第二个域中数据是否与a数组中的数据匹配,匹配则打印本行。

b)精简法:awk -F"[,/ ]" '{a[$1]}{if($2 in a)print $0}' b a


解析:-F"[,/ ]" / 做分隔符,'{a[$1]}{if($2 in a)print $0}' 用第一个域的值作为数组a的下标,判断第二个域是否与数组a(a数组中的有用数据也就为数组a文件中的,即前三行)中的匹配,因为先读入b文件,且b文件中只有一个域,所以此时判断只与a文有关,最后打印匹配行信息。

AWK 域值匹配: awk -F/ '{if($6~/www/) print $0}'
原文地址:

阅读(588) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~