2013-02-15 111 views
1

在其他文件中比較字符串的記錄我要輸出具有匹配另一文件的字符串記錄使用awk腳本 文件1碼輸出使用awk腳本

849002|48|1208004|1 
849007|28|1208004|1 
855003|48|1208004|1 
855004|28|1208004|1 
855006|28|1208004|1 

文件2代碼:

00990029000000004804470425|ST1400029|0.550|Recurring|1248073|ST1400029 
00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029 
009900290000000000007800612988|IM3350029|1.000|Recurring|1248063|ST1400029 

請注意,855003發生在每個樣品的中間行?這就是我要尋找的匹配,輸出應該是:

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029 

因爲我想file2中搜索在$ 5文件1 $ 1,如果匹配,那麼找到輸出線 我試過,但它返回零記錄

awk 'NR==FNR{a[$1]=$1;next}a[$5]{print $0}' file2 file1 > outfile 

你的幫助將解決我的問題,我要搜索數據的一長串

回答

3

不要忘記使用-F標誌設置分隔符:

awk -F "|" 'FNR==NR { a[$1]; next } $5 in a' file1 file2 

結果:

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029 
+0

非常感謝它的工作 – Rakesh 2013-02-16 13:39:03

+0

@Rakesh:不要忘了接受,如果它的答案已經爲你工作。乾杯。 – Steve 2013-02-16 14:49:33

+0

感謝提醒,做到了... – Rakesh 2013-02-16 18:17:18

2

試試這個(沒有測試)

awk 'NR==FNR{a[$1];next}$5 in a' file1 file2