2016-04-08 10 views
0

İki dosyada aşağıdaki bilgilere sahibim. FILE2'de eşleşen dosyaları ve yazdırma çizgilerini karşılaştırmak zorundayım.awk kullanarak iki dosyayı karşılaştırın ve eşleşen satırları yazdır

file1.txt

martin01 
kevin01 
phoenix01 
samson01 
edward01 

file2.txt

martin01.test.com empid: 9874712 
martin01.test1.com empid:0972292 
kevin01.test.com empid: 3297203 
kevin01.test.com empid: 3297203 
phoenix01.test.com empid: 9872219 
phoenix01.test1.com empid:9803994 
samson01.test.com empid: 0983903 
samson01 empid: 7665758 
edward01.test.com empid: 0979072 
edward01.test2.com empid: 748840 
gregory01.test.com empid: 657758 
clevin01.test.com empid:6589598 

Beklenen çıktı böyle olmalı:

martin01.test.com empid: 9874712 
martin01.test1.com empid:0972292 
kevin01.test.com empid: 3297203 
kevin01.test.com empid: 3297203 
phoenix01.test.com empid: 9872219 
phoenix01.test1.com empid:9803994 
samson01.test.com empid: 0983903 
samson01 empid: 7665758 
edward01.test.com empid: 0979072 
edward01 empid: 748840 

Bu yazdığım ama bir yerde onun sorunun ne ..

awk 'FNR==NR {a[$1]; next} $1 in a' FILE1.txt FILE2.txt 
+0

Neden edward01 empid? Edward01.test2.com empid değil mi? –

cevap

2

Eğer . FS ayarlamak gerekir:

awk -F'[.[:space:]]' 'FNR==NR {a[$1]; next} $1 in a' FILE1.txt FILE2.txt 
+0

Merhaba Ed, Sorguyu sınırlayıcı olmadan dizeyle eşleştirmek istediğim gibi değiştirdim "." yanı – user3834663

+0

"edward01 EmpID: 748840" – user3834663

+0

Sanki çıkışı üzerinden yukarıdaki komutu benziyor bu – user3834663

2

alternatif maç her yerde uyumludur, ilk alana sadece sınırlı değildir o notu

$ grep -Ff file1 file2 

martin01.test.com empid: 9874712 
martin01.test1.com empid:0972292 
kevin01.test.com empid: 3297203 
kevin01.test.com empid: 3297203 
phoenix01.test.com empid: 9872219 
phoenix01.test1.com empid:9803994 
samson01.test.com empid: 0983903 
samson01 empid: 7665758 
edward01.test.com empid: 0979072 
edward01.test2.com empid: 748840 

awk için. Alanlarınız ayrık kümeleri ise bunu kullanın.

+0

Fena değil ama dosya2 içinde herhangi bir yere dosya1 eşleşecektir. –

+0

evet, dolayısıyla p.s. not – karakfa

+0

'grep -f <(sed 's /^./^&/ g' dosya1.txt) dosya2.txt' –