2017-04-21 58 views
1

我有看這兩個文件:如何比較兩個文件中的不同列,並在第一個文件中打印?

file1: 

apples 
pears 
grapes 
oranges 
melon 

file2: 

gene1 apples 
gene2 television 
gene3 pears 
gene4 homeless 

所需的輸出:

gene1 apples 
gene3 pears 

我想用awk來比較文件1的列1與文件2的列2和打印出文件2的整條生產線?我怎樣才能做到這一點?

+1

這個被問了一個星期的20倍左右。只需搜索檔案。 –

+1

只是從'file1'收集字段值,然後過濾'file2'的記錄,如果它們匹配以前收集的任何值 – RomanPerekhrest

+0

http://stackoverflow.com/questions/42239179/fastest-way-to-find-lines-of -a文本文件從 - 另一側大的文本文件中,慶典 –

回答

1

您可以通過使用文件中的一個的每一行作爲文件2使用grep的值,這樣做:

cat file1.txt | xargs -I{} sh -c 'cat file2.txt | grep {}' 

甚至更​​好:

grep -f file1.txt file2.txt 

注:

第一個例子容易受到注入攻擊。也就是說,有人可能會將惡意的bash命令放入您處理的文本文件中以執行。第二個例子並非如此。

第二個示例的主要缺點是,如果在file1的末尾有多餘的空格,它將不匹配。那就是"apple"將與"apple "(注意第二個蘋果末尾的空間)不同。

資源:

More comprehensive answer

相關問題