2016-03-10 110 views
1

我有一個File_1.txt,其中包含以下數據。比較兩個不同文件中的非連續字段

1234 
2567 

第二個文件File_2.txt中有下面的數據。

2015-10-30,1234,zxcfgdk,kyfz 
2015-10-30,2567,askjfkj,aaaa 
2015-10-30,8888,bsjfjah,iojk 

我想比較File_1.txt數據與File_2.txt的第2列數據。如果匹配,則將整個File_2.txt行重定向到一個單獨的文件。和那個與其他文件不匹配的那個。

已經搜索了很多頁面。但沒有任何幫助。

謝謝!

回答

1

隨着awk

$ cat s.awk 
BEGIN { FS="," } 
NR==FNR { a[$1]; next } 
$2 in a { print > "matched.txt" } 
!($2 in a) { print > "missing.txt" } 

$ awk -f s.awk f1 f2 

$ cat missing.txt 
2015-10-30,8888,bsjfjah,iojk 

$ cat matched.txt 
2015-10-30,1234,zxcfgdk,kyfz 
2015-10-30,2567,askjfkj,aaaa 

隨着grep

另一種可能性是簡單地使用grep,但你必須確保在文件1的值將不會出現(文字分隔)的文件2外field2:

$ grep -w -f f1 f2 
2015-10-30,1234,zxcfgdk,kyfz 
2015-10-30,2567,askjfkj,aaaa 

$ grep -v -w -f f1 f2 
2015-10-30,8888,bsjfjah,iojk 
+0

感謝jas爲您提供的解決方案。有沒有其他簡單的方法來做到這一點? – vmadhav

+0

請參閱編輯選項。 – jas

+0

謝謝Jas,這真棒,它適合我的解決方案。 – vmadhav