2016-04-04 13 views
0

Iki (sekmeyle ayrılmış) dosyaların ilk sütunlarını karşılaştırmak istiyorum. Bir eşleşme varsa, dosya 1. Örn her şeyi yazdırmak:Bir dosyada awk arama sütunu, bir dosyanın ikinci dosyadaki değerlerle eşleşip eşleşmediğini görmek için

dosya 1

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

dosya 2

LEE 
LEA 
ALE 
EEL 

İstenilen çıktı: Artık

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

, ben yapabilirsiniz Aşağıdakileri kullanarak 1 sütununda tam eşleşmeleri bulmaya başlayın:

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

veren:

LEE A 11121 14597 

Ancak, bu listede birden fazla kelime var 1. sütunda girişleri almak nasıl kafanız karışık biraz değilim. Diğer (önemsiz) sözcüklere sahip olup olmadıklarına bakılmaksızın, aradığım kelimeleri içeren her satırı yazdırmak istiyorum. Peki nasıl o

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

da aradığım kelime var olduğunu kabul ve onlara çıkış dosyasında yazdırmak için yaparım? Çok teşekkürler!

Bir döngü içinde regex maç yapmak gerekir

cevap

1

, sanırım:

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

Örnek çıktı:

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