2010-09-29 32 views
2

我有兩個文件,應該比較文件2的第一列和文件1的第一列返回常見領域產生的文件應該是文件2在兩個文件中

例如:

  • 文件1

    蘋果
    香蕉
    芒果
    土豆
    番茄

  • 文件2

    蘋果:果
    茄子:蔬菜
    小姐的手指:蔬菜
    橙色:水果
    西紅柿:蔬菜
    土豆:蔬菜

合力文件應該看起來像這樣的:

蘋果:果
西紅柿:蔬菜
土豆:蔬菜

有這方面的想法,將不勝感激

感謝

回答

2

,而不需要進行排序(減少進程創建)

$ awk -F":" 'FNR==NR{f[$0];next}($1 in f)' file file2 
apple:fruit 
tomato: vegetable 
potato: vegetable 
0
grep "$(cat file1.txt)" file2.txt 
+1

'grep的-f FILE1.TXT file2.txt' – 2010-09-29 14:49:02

+0

我得到一個錯誤 「非法變量名」 – Shruti 2010-09-29 14:50:12

+0

@Dennis:哦,不錯,不知道那個國旗,謝謝你:P – 2010-09-29 15:06:05

1

在bash和ksh,zsh的:

join -t: <(sort file1) <(sort file2) 

在其他shell中,您需要預先設置文件。