awk雙文件互相匹配查找

awk雙文件互相匹配查找

要求數組

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

文件b:  
05766798607  
05766798608  
05766798609  
經過文件a和文件b對比,輸出結果以下: 
10/05766798607,11/20050325191329,29/0.1,14/05766798607it

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

解析:NR爲主體行號,FNR爲單位文件行號。{if(NR==FNR){a[$1]} 將b文件中的數據放入數組a,else if($2 in a)print $0}' 主要是對b文件內容的操做,判斷第二個域中數據是否與a數組中的數據匹配,匹配則打印本行。awk

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

相關文章
相關標籤/搜索