2017-03-09 5 views
1

Ich möchte zwei Dateien für beide $ 1, $ 2 Spalte in awk vergleichen. Wenn derselbe aus der zweiten Datei gedruckt wird und wenn nicht derselbe Druck, alle aus der ersten Datei.Vergleichen Sie zwei Spalten in zwei Dateien "awk"

1. file:

a 1 2

b 2 3

c 3 4

2. Datei:

a 1 2 ko lo zu

b 2 3 ho ro

Ergebnis:

a 1 2 ko lo zu

b 2 3 ho ro

c 3 4

Also würde ich gerne Zeilen aus der ersten Datei hinzufügen, die nicht mit der zweiten übereinstimmen Datei.

schrieb ich:

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

aber es wird nicht funktionieren :-( Danke

Antwort

3

awk zur Rettung

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

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

diese den Auftrag aber nicht erhalten.! (Es wird zuerst Datei2 Inhalt gedruckt.) Eine andere Alternative ist

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

oh wirklich: D funktioniert perfekt! Danke vielmals. – Vonton

Verwandte Themen