2010-05-14 3 views
10

İki metin dosyasını karşılaştırarak linux komutunu kullanarak aşağıdaki çıkışı nasıl elde edebilirim? Teşekkürler.iki dosyayı karşılaştırır ve aynı satırın çıktılarını alırsınız

Dosya1:

site110 
site120 

Dosya2 (Güncellendi):

domain1.com - site110 
domain2.com - site111 
domain3.com - site112 
domain4.com - site113 
domain5.com - site120 
domain6.com - site1201 
domain7.com - site1202 

çıkışı:

domain1.com - site110 
domain5.com - site120 

Ben kullanıyorsanız:

grep -f file1 file2 

çıkış olacaktır: son iki satır olmayan

domain1.com - site110 
domain5.com - site120 
domain6.com - site1201 
domain7.com - site1202 

ne istiyorum. Teşekkürler.

+0

"[SOLVED]" eklemek gerekli değildir, sistemin kendi göstergeleri vardır. –

+0

Teşekkürler. Ben SO sistemini seviyorum. :) – garconcn

+0

Ben burada grep -f 'çalışmasını yapamıyorum, ama 'gw' komutuna' -w' eklerseniz çalışır. – Thor

cevap

13

:

nedenle
-f FILE, --file=FILE 
      Obtain patterns from FILE, one per line. The empty file 
      contains zero patterns, and therefore matches nothing. (-f is 
      specified by POSIX.) 

:

grep -f file1 file2 

domain1.com - site110 
domain5.com - site120 
+0

Daha önce grep -f dosya1 dosyasını2 denedim, ancak komut dosyamda çalışmadı. İşe yaramadığını düşündüm. Şimdi senaryomu tamir ettim. Teşekkür ederim. – garconcn

+0

Bu "site1201" ile eşleşir, ancak "grep" komutuna "-w" eklerseniz çalışır. – Thor

0

Peki ya diff? grep manpage itibaren

+0

Başta, farkım sorunumu çözebileceğini düşündüm, ama hangi seçeneği kullanacağımı bilmiyorum. Teşekkürler. – garconcn

0

man paste olabilir? Bazı çıkış işlemleri gerekli olabilir.

3

comm komutunu kullanın.

comm -12 < (sort file1) < (sort file2) 

Bu komut grep -f'dan daha doğrudur.

+0

Buna bayıldım, teşekkürler! Dizinler için de iyi çalışır: comm -12 <(ls -1 dir1/| sort) <(ls -1 dir2/| sort) – Nitro

1

Bir tür veritabanı birleştirme işlevini aradığınızı düşünüyorum. Unix'in bunun için bir komutu vardır: join. Durum:

join -1 1 -2 3 -t " " -o 2.1,2.2,2.3 file1 file2