亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
請教一個(gè)shell及awk相關(guān)的問題
[打印本頁]
作者:
wangliang222002
時(shí)間:
2010-03-29 18:05
標(biāo)題:
請教一個(gè)shell及awk相關(guān)的問題
本帖最后由 wangliang222002 于 2010-03-29 18:09 編輯
文件a格式如下,有二列數(shù)據(jù)用逗號分隔約1000w行
a,1
b,342
c,4342
d,434
e,2
f,2
...
文件b格式如下,只有文件b中的第一列部分?jǐn)?shù)據(jù),約10w行
a
c
d
...
現(xiàn)在想查出a文件中含b文件的部分。
我用shell腳本循環(huán)b文件,然后執(zhí)行10w次grep對a文件的查找,輸出到一個(gè)新文件就可以了
輸出后的格式為
a,1
c,4342
d,434
...
但這種辦法效率太低,有沒有什么快的辦法?
作者:
wangliang222002
時(shí)間:
2010-03-29 18:09
輸出后的格式為
a,1
c,4342
d,434
...
作者:
wtuter
時(shí)間:
2010-03-29 18:11
本帖最后由 wtuter 于 2010-03-29 18:12 編輯
回復(fù)
1#
wangliang222002
沒表達(dá)清楚
不過試試grep -Ff b a
作者:
wangliang222002
時(shí)間:
2010-03-29 18:39
回復(fù)
3#
wtuter
謝謝,就是你這個(gè)意思。
不過還有個(gè)問題
文件a數(shù)據(jù)若為:
abc,123
a,123
z,34
...
文件b數(shù)據(jù)為
a
...
那么abc,123數(shù)據(jù)也會返回,我想b文件的數(shù)據(jù)對a文件的第一列完全匹配,只返回a,123該怎么弄呢?
作者:
wtuter
時(shí)間:
2010-03-29 18:46
回復(fù)
4#
wangliang222002
grep -wFf b a
作者:
ly5066113
時(shí)間:
2010-03-29 18:49
回復(fù)
5#
wtuter
應(yīng)該是這個(gè)意思:
awk -F, 'NR==FNR{a[$1]}NR>FNR&&($1 in a)' b a
復(fù)制代碼
作者:
ghp268
時(shí)間:
2010-03-29 19:24
應(yīng)該是5樓的意思吧
作者:
wtuter
時(shí)間:
2010-03-29 19:26
回復(fù)
7#
ghp268
tim的意思也對,不過tim沒寫全
awk 'NR==FNR{a[$1]}NR>FNR{if($1 in a)print $0}' b a
作者:
cearo
時(shí)間:
2010-03-29 21:50
回復(fù)
8#
wtuter
FNR{a[$1]}
這些是什么意思能解釋下你這句嗎?劉德華
作者:
Shell_HAT
時(shí)間:
2010-03-29 22:30
你把劉德華的命令肢解了,應(yīng)該這樣看:
當(dāng)NR==FNR的時(shí)候執(zhí)行{a[$1]}
作者:
ghp268
時(shí)間:
2010-03-29 23:09
回復(fù) wtuter
FNR{a[$1]}
這些是什么意思能解釋下你這句嗎?劉德華
cearo 發(fā)表于 2010-03-29 21:50
相當(dāng)于建立了一個(gè)關(guān)聯(lián)數(shù)組
作者:
ly5066113
時(shí)間:
2010-03-30 09:57
回復(fù)
8#
wtuter
寫全了,awk默認(rèn)的action就是{print $0}
NR>FNR&&($1 in a)
等價(jià)于
NR>FNR&&($1 in a){print $0}
grep的方案要依賴樓主的數(shù)據(jù),如果樓主a文件的第二列有與b文件相匹配的也會被列出來。
awk會更精確一些。
作者:
wtuter
時(shí)間:
2010-03-30 13:58
回復(fù)
12#
ly5066113
對,tim說的對
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2