Ich versuche alle Zeilen aus Datei eins + Spalte 3 aus Datei zwei zu drucken, wenn Spalte eins in beiden Dateien übereinstimmt, Spalte 3 jedoch nicht.AWK Vergleiche 2 Spalten in 2 Dateien, drucke, wenn eine gleich ist, andere nicht
Beispiel:
File1
John 12 Mango
David 13 Apple
Jack 14 Orange
File2
John 12 Grape
David 13 Apple
Jack 14 Apple
Ausgabe
John 12 Mango Grape
Jack 14 Orange Apple
Ich habe versucht, verschiedene awk-Befehle, aber sie funktionieren, wenn beide Spalte Matches, aber ich brauche zu drucken, wenn nur 1 Spalte Spiel und andere nicht. Ich bin ziemlich neu in Skript und Unix-Befehl, ich würde mich über eine kleine Erklärung der vorgeschlagenen Lösung freuen.
Das ist genau das, was ich gesucht habe, der Rest der Lösungen funktioniert auch, aber dies ermöglicht eine einfachere Modifikation. Ed, würdest du in der Lage sein, einen Überblick über deine Syntax zu geben und/oder ein Tutorial für die gleiche Verwendung von AWK vorschlagen? –
erstellt eine Array-Zuordnung von $ 1 bis $ 3 beim Lesen von Datei2, dann wenn $ 1 von Datei1 ist ein Index in diesem Array vergleicht die $ 3 für die aktuelle $ 1 mit der $ 3 im Array durch den gleichen Index, wenn es von Datei2 gelesen wurde. Wenn der aktuelle $ 1 von Datei1 ein $ 1 in Datei2 und der $ 3 Wert von Datei1 nicht der gleiche wie der $ 3 Wert von Datei 1 ist, dann druckt er die aktuelle Zeile von Datei1, gefolgt von $ 3 von Datei2, indiziert von $ 1. Hoffnung, die Sinn macht. Holen Sie sich das Buch Effective Awk Programming, 4. Auflage, von Arnold RObbins, –