說明:藍色=命令名稱
淺綠=命令參數
淺藍=選項
紫色=目錄
系統環境: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 a
650) 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 a
650) this.width=650;" border=0>
解析:-F"[,/ ]" 用,或/ 做分隔符,'{a[$1]}{if($2 in a)print $0}' 用第一個域的值作為數組a的下標,判斷第二個域是否與數組a(a數組中的有用數據也就為數組a文件中的,即前三行)中的匹配,因為先讀入b文件,且b文件中只有一個域,所以此時判斷只與a文件有關,最後打印匹配行信息。