Dateien auf Zeilenanfang abstimmen

510
Bowi

Bei Partys nehme ich alles auf, was meine Gäste essen. [1]

Hinweis : Ich habe ein paar Registerkarten eingefügt, um alles lesbar zu machen.

party1.txt:

Bernhard Apple Jeremy Cake Liz Cake Daisy Pear 

party2.txt:

Liz Cake Bernhard Pear Jeremy Cake Susan Orange 

Jetzt möchte ich sehen, ob die Gäste durch Vergleich der Dateien vorhersehbar sind. ich kann nutzen

cat party1.txt | sort > party1-sorted.txt cat party2.txt | sort > party2-sorted.txt 

Aber von Hand zu vergleichen ist langsam. Gibt es eine Gelegenheit, um einen pasteMatchBefehl zu haben, geben

Bernhard Apple Pear Daisy Pear  Jeremy Cake Cake Liz Cake Cake Susan Orange 


[1] Natürlich nicht wirklich.

1
Ich wollte etwa, dass Sie mit "Sie müssen mehr rauskommen ..." antworten, dann lese ich [1]. spikey_richie vor 5 Jahren 0
Versuchen Sie nach dem Sortieren, die verschiedenen Dateien mit dem Befehl Einfügen in Spalten zu kombinieren. Möglicherweise müssen Sie einige Bearbeitungen vornehmen, wenn nicht alle Personen an allen Parteien teilgenommen haben. Lewis M vor 5 Jahren 0
Wenn ich "Einfügen" verwende, werden die Namen ebenfalls verdoppelt ... Bowi vor 5 Jahren 0

1 Antwort auf die Frage

1
harrymc

Die einfachste Lösung ist der Befehl join .

Die Syntax lautet:

join -j 1 -a 1 -a 2 party1-sorted.txt party2-sorted.txt 

Das Standard-Join-Feld ist das erste, getrennt durch Leerzeichen. Dieser Befehl ersetzt jedoch mehrere Leerzeichen durch eins:

Bernhard Apple Pear Daisy Pear Jeremy Cake Cake Liz Cake Cake Susan Orange 

Ein anspruchsvolleres Ausgabeformat erfordert die Verwendung von awk oder sed.

Kleiner Zusatz, mit etwas Hilfe von https://stackoverflow.com/a/15439906/6403504: Die Option -e HELLO gibt den Wert "HELLO" für jede Partei an, bei der sich die Person nicht befunden hat (leeres oder nicht zugeordnetes Feld) ), funktioniert aber nur, wenn auch "-o auto" angegeben ist. Bowi vor 5 Jahren 0