Chinaunix

标题: 求shell & sed 方法,一个题 [打印本页]

作者: vincent_lnfsddy    时间: 2012-04-28 13:32
标题: 求shell & sed 方法,一个题
本帖最后由 vincent_lnfsddy 于 2012-04-28 13:35 编辑

A.txt
111     222     333
444     555     212
777     123     777
123     999     123

B.txt
111     222     333
444     121     666
777     123     777
888     999     123

结果
C.txt
比如A.TXT第一列比对B.TXT第二列交集结果是
123
差集是
222
121
999

劳烦大牛使用shell、sed、awk
对比两个文件交集、两个文件差集
A.TXT文件第一列与B.TXT的第二列比对交集与差集
第一列对第三列,第三列对第二列等等。。。。
因为我们这文件有八百万行,所以我想用什么方法最快计算出来。

此题引用:
求教一个shell问题
http://bbs.linuxtone.org/forum.p ... 1&fromuid=11131

作者: dragon23452345    时间: 2012-04-28 17:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: zooyo    时间: 2012-04-28 22:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: vincent_lnfsddy    时间: 2012-04-29 00:12
dragon23452345 发表于 2012-04-28 17:02


多谢兄弟给出grep 方法~!学习去!
作者: vincent_lnfsddy    时间: 2012-04-29 00:13
回复 3# zooyo

zooyo 版主谢谢你的热心:wink:
   
作者: zooyo    时间: 2012-04-29 10:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: winway1988    时间: 2012-04-30 10:11
回复 6# zooyo

x=b[j,2]
if(x==b[j,2])

是不是应该写成
  1. x[b[j,2]]
  2. if(b[j,2] in x)
复制代码

作者: winway1988    时间: 2012-04-30 10:34
  1. awk 'BEGIN{f[1]=2;f[2]=1}NR==FNR{b[$f[ARGIND]]=2;next}!a[$f[ARGIND]]++{b[$f[ARGIND]]++}END{print "Mixed:";for(i in b)if(b[i]>2)print i;print "Difference:";for(i in b)if(b[i]==2)print i}' B A
复制代码

作者: zooyo    时间: 2012-04-30 19:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: vincent_lnfsddy    时间: 2012-05-01 21:10
感谢zooyo版主与winway1988  的热心帮助小弟受教啦!CU的能人牛人真多!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2