2010-05-14 28 views
10

Làm cách nào để có được kết quả sau bằng lệnh linux bằng cách so sánh hai tệp văn bản? Cảm ơn.so sánh hai tệp và nhận kết quả cho cùng một dòng

file1:

site110 
site120 

file2 (Cập nhật):

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

đầu ra:

domain1.com - site110 
domain5.com - site120 

Nếu tôi sử dụng:

grep -f file1 file2 

đầu ra sẽ là:

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

mà hai dòng cuối không phải là thứ tôi muốn. Cảm ơn.

+0

Không cần thêm "[SOLVED]", hệ thống có chỉ báo riêng. –

+0

Cảm ơn. Tôi yêu hệ thống SO. :) – garconcn

+0

Tôi không thể tạo 'grep -f' ở đây, nhưng nếu tôi thêm' -w' vào lệnh 'grep' thì nó hoạt động. – Thor

Trả lời

13

Từ grep manpage:

-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.) 

Do đó:

grep -f file1 file2 

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

Tôi đã thử grep -f file1 file2 trước đây, nhưng nó không hoạt động trên tập lệnh của tôi. Tôi nghĩ nó không hoạt động. Bây giờ, tôi đã sửa kịch bản của mình. Cảm ơn bạn. – garconcn

+0

Điều này khớp với 'site1201' ở đây, nhưng nếu tôi thêm' -w' vào lệnh 'grep' thì nó hoạt động. – Thor

0

Làm thế nào về diff?

+0

Lúc đầu, tôi nghĩ rằng diff có thể giải quyết vấn đề của tôi, nhưng tôi không biết tùy chọn để sử dụng. Cảm ơn. – garconcn

0

Có thể man paste? Một số xử lý đầu ra có thể là cần thiết.

3

Sử dụng lệnh comm.

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

Lệnh này chính xác hơn grep -f.

+0

Yêu thích điều này, cảm ơn! Hoạt động tốt cho các thư mục: comm -12 <(ls -1 dir1/| sort) <(ls -1 dir2/| sort) – Nitro

1

Tôi nghĩ bạn đang tìm kiếm một loại chức năng tham gia cơ sở dữ liệu. Unix có lệnh cho rằng: join. Trong trường hợp của bạn:

join -1 1 -2 3 -t " " -o 2.1,2.2,2.3 file1 file2 
Các vấn đề liên quan