zoukankan      html  css  js  c++  java
  • awk双文件互相匹配查找

    awk双文件互相匹配查找

    要求

    文件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文件有关,最后打印匹配行信息。

  • 相关阅读:
    线段的类
    计算三角形的类
    关于狗的类
    [poj2234] Matches Game
    bzoj[2655] calc
    拉格朗日插值和牛顿插值 菜鸟教程
    NOI模拟赛(3.15) sequence(序列)
    NOI模拟赛(3.13)Hike (远行)
    二分图讲解
    NOI模拟赛(3.8)Problem B
  • 原文地址:https://www.cnblogs.com/qingchen1984/p/7655940.html
Copyright © 2011-2022 走看看