2017-02-15 1 views
-1

Ich habe das folgende Problem, ich habe zwei Akten mit 10 col jeder und unterschiedlicher Anzahl von Reihen. Ich möchte Spalte 7 vergleichen und wenn es eine Übereinstimmung gibt, exportieren Sie die komplette Zeile der beiden Dateien in eine andere. Ich versucheawk: Wie man zwei Dateien zusammenbringt und die Ausgabe erhält, die diese Dateien mergt

awk 'NR==FNR{a[$7]=$0;next}!a[$7]' file1 file2 > output 

, aber ich bekomme nur die Übereinstimmung für file1 in anderen Datei. Es macht mir nichts aus, wenn ich nur die Spalte 10 in Datei 1 bekomme, wenn es eine Übereinstimmung gibt. Irgendein Vorschlag?

Danke!

+2

Konnten Sie ein Beispiel von dem, was Sie versuchen und Ihre erwartete Ausgabe? – Inian

Antwort

1

Angenommen beide Dateien haben mindestens 7 Spalten, haben Sie vergessen, awk mitzuteilen, dass beide Werte ausgegeben werden sollen. Ihre aktuelle Lösung überprüft, ob der 7. Wert von Datei2 NICHT im Array mit den Werten von Datei1 enthalten ist, und druckt nur diese Zeilen von Datei2 in die neue Datei. Also einfach test Wert ist in der array und dann einen Druck in einige geschweifte Klammern setzen:

awk 'NR==FNR{a[$7]=$0;next}$7 in a{print a[$7],$0}' file1 file2 > output 
+0

Ja, danke. Es funktioniert jetzt. –

Verwandte Themen