Welcome 微信登录

首页 / 操作系统 / Linux / awk双文件互相匹配查找

说明:蓝色=命令名称      浅绿=命令参数      浅蓝=选项      紫色=目录      系统环境:CentOS  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 a650) this.width=650;" border=0>解析: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 a650) this.width=650;" border=0>解析:-F"[,/ ]" 用,或/ 做分隔符,"{a[$1]}{if($2 in a)print $0}" 用第一个域的值作为数组a的下标,判断第二个域是否与数组a(a数组中的有用数据也就为数组a文件中的,即前三行)中的匹配,因为先读入b文件,且b文件中只有一个域,所以此时判断只与a文件有关,最后打印匹配行信息。CentOS 6 KVM虚拟机yum安装CentOS 根据命令查所在的包相关资讯      awk 
  • 使用 awk 过滤文本或文件中的字符  (07月25日)
  • Linux 管理员都应该会的命令:sed   (01月13日)
  • Linux awk文本分析工具  (12/13/2015 16:29:12)
  • 使用awk格式化输出文本  (04月14日)
  • 使用awk批量杀进程的命令  (12/20/2015 15:36:24)
  • 使用 Linux/Unix 进行文本处理  (11/23/2015 09:54:13)
本文评论 查看全部评论 (0)
表情: 姓名: 字数