亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 請教:awk如何根據(jù)文件1中的關(guān)鍵字提取文件2中的內(nèi)容? [打印本頁]

作者: Ienovo_qq    時間: 2013-09-11 11:07
標(biāo)題: 請教:awk如何根據(jù)文件1中的關(guān)鍵字提取文件2中的內(nèi)容?
文件1:
4238
4240

文件2
4237  MY4237A
4237  MY4237B
4238  MY4238A
4238  MY4238B
4238  MY4238C
4239  MD4239A
4240  MY4240A
4240  MY4240B
4240  MY4240C
4240  MD4240A
4240  MD4240B
4240  MD4240C

要求根據(jù)文件1中的字段1為關(guān)鍵字提取文件2中的內(nèi)容,輸出如下:
4238  MY4238A
4238  MY4238B
4238  MY4238C
4240  MY4240A
4240  MY4240B
4240  MY4240C
4240  MD4240A
4240  MD4240B
4240  MD4240C

請各位大俠支招,先謝謝了。


作者: 關(guān)陰月飛    時間: 2013-09-11 11:08
  1. grep -wf  file1 file2
復(fù)制代碼

作者: Ienovo_qq    時間: 2013-09-11 11:10
回復(fù) 2# 關(guān)陰月飛
這么快,謝謝,能用awk實(shí)現(xiàn)嗎?


   
作者: 關(guān)陰月飛    時間: 2013-09-11 11:11
回復(fù) 3# Ienovo_qq
  1. awk 'FNR==NR{a[$0]=$0;next}a[$1]'  file1 file2
復(fù)制代碼

作者: Ienovo_qq    時間: 2013-09-11 11:16
回復(fù) 4# 關(guān)陰月飛


    經(jīng)測試,能滿足要求,多謝多謝。
作者: Ienovo_qq    時間: 2013-09-11 11:26
又是用的數(shù)組,我理解一下:FNR==NR{a[$0]=$0}讀文件1,數(shù)組a[4238]=4238,a[4240]=4240; next}a[$1] next讀文件2,a[$1]以文件2的第一列進(jìn)行匹配,省略print $0。不知對不對?
作者: li0924    時間: 2013-09-11 13:53
awk 'NR==FNR{a[$1]=1;next}{if(a[$1]==1)print $0}'
作者: li0924    時間: 2013-09-11 14:00
回復(fù) 4# 關(guān)陰月飛
想法很獨(dú)特!贊!


   
作者: 關(guān)陰月飛    時間: 2013-09-11 14:41
本帖最后由 關(guān)陰月飛 于 2013-09-11 14:42 編輯

@li0924
回復(fù) 6# Ienovo_qq

”又是用的數(shù)組,我理解一下:FNR==NR{a[$0]=$0}讀文件1,數(shù)組a[4238]=4238,a[4240]=4240; next}a[$1] next讀文件2,

a[$1]以文件2的第一列進(jìn)行匹配,省略print $0 “

最后的a[$1] 是用來做斷判的:
a[$1] ==》 if(a[$1])  即 a[$1]  不為空值 或 0  則打印 $0

為了保險上面四樓代碼得改一下(借簽7樓用法,可避$0值為0時會出現(xiàn)錯誤):
  1. awk 'FNR==NR{a[$0]=1;next}a[$1]'  file1 file2
復(fù)制代碼

作者: Ienovo_qq    時間: 2013-09-11 14:44
各位高手,佩服佩服。
作者: howge    時間: 2013-09-22 16:21
學(xué)習(xí)了!
回復(fù) 9# 關(guān)陰月飛


   
作者: fh21_xuejinlian    時間: 2016-05-19 17:20
awk  'NR==FNR{a[$1]=$1}NR!=FNR{if(a[$1])print $0}'  file1 file2
作者: hechao7021    時間: 2019-04-20 16:57
回復(fù) 1# Ienovo_qq

我的數(shù)據(jù)跟樓主的類似,用上面的代碼都輸不出數(shù)據(jù),求賜教第一個文件:a.txt
LOC_Os01g01160
LOC_Os01g06454
LOC_Os01g17030
LOC_Os01g53020第二個文件:b.txt
LOC_Os05g50810        5        29142204        +        CHH        CTC
LOC_Os05g50810        5        29142215        +        CHH        CAA
LOC_Os01g01160        5        29142259        -        CHH        CTT
LOC_Os01g01160        5        29145615        +        CHH        CCA
LOC_Os01g01160        5        29145616        +        CHH        CAT
LOC_Os05g50810        5        29145869        -        CHH        CTA
LOC_Os01g06454        5        29145890        -        CHH        CAT
LOC_Os01g06454        5        29145912        -        CHH        CTT
LOC_Os05g50810        5        29145913        -        CHH        CCT
LOC_Os01g17030        5        29146309        +        CHH        CTA
LOC_Os01g17030        5        29146385        +        CHH        CAA
LOC_Os05g50810        5        29146426        +        CHH        CAA
LOC_Os01g53020        6        853213        -        CHH        CAC







歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2