2016-04-04 6 views
0

Ich möchte die erste Spalte von zwei (Tab-getrennte) Dateien vergleichen. Wenn es eine Übereinstimmung gibt, drucken Sie alles aus einer Datei 1. ZB:awk Suche Spalte in einer Datei, um zu sehen, ob es mit einem der Werte in der zweiten Datei übereinstimmt

Datei 1

MOS A 141282 141938 
    LEE A 11121 14597 
    TOD B 19237 20373 
    LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 

Datei 2

LEE 
LEA 
ALE 
EEL 

gewünschte Ausgabe:

LEE A 11121 14597 
    LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 

Jetzt kann ich Holen Sie es, um genaue Übereinstimmungen in Spalte 1 zu finden, indem Sie Folgendes verwenden:

awk 'NR==FNR { a[$1] =$1; next} $1 in a {print $0}' file2 file1 

die gibt:

LEE A 11121 14597 

Aber ich bin ein wenig ratlos, wie es 1 Einträge in Spalte abholen zu machen, wo es mehr als ein Wort aufgeführt ist. Ich möchte jede Zeile drucken, die die gesuchten Wörter enthält, unabhängig davon, ob sie auch andere (unwichtige) Wörter haben. So wie ich es erkennen, dass

LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 

auch die Worte ich suche, und sie in der Ausgabedatei drucken? Vielen Dank!

Antwort

1

Sie benötigen einen Regex in einer Schleife zu tun, denke ich:

awk 'NR==FNR { a[$1] = $1; next} 
      { for (k in a) if ($1 ~ a[k]) { print $0; break } }' file2 file1 

Beispielausgabe:

LEE A 11121 14597 
    LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 
Verwandte Themen