2017-03-09 89 views
1

我想比較awk中$ 1,$ 2兩列的兩個文件。如果從第二個文件開始打印同樣的文件,並且如果不一樣,則從第一個文件打印所比較兩個文件中的兩列「awk」

第一文件:

一個1 2

B 2 3

的C 3 4

第二文件:

一個1 2 KO LO到

B 2 3到HO RO

結果:

一個1 2 KO LO到

B 2 3到HO RO

的C 3 4

所以我想從第一個文件中添加與第二個不匹配的行文件。

我寫道:

awk -v OFS="\t" 'FNR==NR{a[$1]=$2=$3;next} {if (($1,$2) in a) print a[$1,$2,$3]; else print $0}' 

,但實在不行:-( 謝謝

回答

3

awk救援

$ awk '!a[$1,$2]++' file2 file1 

a 1 2 ko lo to 
b 2 3 to ho ro 
c 3 4 

這雖然不會維持秩序! (它將首先打印file2內容)另一種替代方法是

$ awk '{k=$1 FS $2} 
    NR==FNR {a[k]=$0; next} 
      {print (k in a?a[k]:$0)}' file2 file1 
+0

哦真的:D完美無缺!非常感謝。 – Vonton