赞助连接

赞助连接

阅 读 文 章

两个文件的并集问题,高手们帮下~

[来源:网上转载 (http://bbs.chinaunix.net) | 作者:网友(网络转载) | 时间:2008-06-14 | 浏览:人次 ]

比如第一个文件是
1  2
1 3
1 4
2 5
2 6
2 7
第二个文件是
2
4
5
如果第二个文件某行的内容和第一个文件的第二列内容相同,则输出第一个文件的该行,比如,这里会输出:
1 2
1 4
2 5

awk该怎么写啊。
本来想用paste,发现解决不了啊。高手们帮下啊,小弟在这里感谢了~


awk 'NR==FNR{a[$1]++}NR>FNR&&($2 in a)' file2 file1


try:
假设urfile1已经对第2字段排序。

[Copy to clipboard] [ - ]CODE:$ join -1 2 -o 1.1,1.2 urfile1 urfile2





[Copy to clipboard] [ - ]CODE:cat file2|while read LINE
do
awk '{if($2=="'$LINE'") print $0}' file1
done





QUOTE:原帖由 zhaopingzi 于 2008-6-13 21:55 发表

cat file2|while read LINE
do
awk '{if($2=="'$LINE'") print $0}' file1
done

这个效率太低了,每次循环都要把file1全部读取一遍,不可取,建议参照ly的代 ***


awk 'BEGIN{while (getline < "urfile2"){a[$1]}{if($2 in a){print $0}' urfile1

不知道这个的效率和LY的比起来那个更快些.


好多人帮忙啊,我去试验下不同命令的效率去


TAG标签 : 高手 问题 文件 两个 awk LINE file1 while file2 if

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表
网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.