Vergleichen von Feldern in unterschiedlichen Texten (bei wiederholten Feldern)

Vergleichen von Feldern in unterschiedlichen Texten (bei wiederholten Feldern)

Ich habe zwei Texte. Einer davon ist dieser:

house structure
bank economy
rose animal
...

Und noch ein Text, der für jedes Wort mehr als ein „Label“ enthält:

house structure
bank economy
bank confort
rose plant
...

Ich muss zählen, ob das zweite Feld des ersten Textes mit EINEM VON VIELEN des zweiten Felds des zweiten Textes übereinstimmt. Beispielsweise ist das Wort „Haus“ sowohl im ersten als auch im zweiten eine Struktur, also +1. Das Wort „Bank“ des ersten Textes ist Wirtschaft und ist auch im zweiten Text EINES VON VIELEN, also ebenfalls +1. Das Wort „Rose“ ist im ersten als Tier gekennzeichnet, im zweiten jedoch nicht, also +0.

Am Ende brauche ich eine Anzahl von Punkten. Wie geht das am einfachsten? Danke für die Hilfe, es ist ein bisschen chaotisch.

Antwort1

Es ist keine Linux-Antwort, aber für solche Dinge würde ich beide Dateien in Excel portieren und sie dann mit VLookup und/oder Count vergleichen.

Antwort2

Basierend auf Ihrem Beispiel scheint es, als ob Sie herausfinden möchten, ob eine bestimmte Zeile aus der ersten Datei in der zweiten Datei vorhanden ist oder nicht. Wenn dies der Fall ist, können Sie Folgendes tun

grep -c -f file1 file2

Sehen Sie sich in diesem Zusammenhang auchDasUndDasPosten Sie, wenn die Geschwindigkeit ein Problem ist.

Antwort3

Wie wäre es mit

awk 'NR==FNR {a[$1]=$2; next;} a[$1]==$2' text1 text2
house structure
bank economy

oder wenn Sie eine tatsächliche Anzahl wünschen

awk 'NR==FNR {a[$1]=$2; next;} a[$1]==$2 {c[$1]++} END {for (i in c) print i, c[i]}' text1 text2
house 1
bank 1

verwandte Informationen