Chinaunix

标题: 2个文件比较 [打印本页]

作者: peacock66    时间: 2010-05-20 16:35
标题: 2个文件比较
本帖最后由 peacock66 于 2010-05-20 16:36 编辑

请教如下问题,由于行数很多,所以效率越高越好
a文件
23232
454654
7687898
453454

b文件
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 7687898 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 7687898 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 453454 fdfdasd  dsds dasdfdfd grthjtjt

输出:
不含有a文件字段的 b文件的内容
作者: HH106    时间: 2010-05-20 16:39
grep -vFf
作者: lkk2003rty    时间: 2010-05-20 16:42
本帖最后由 lkk2003rty 于 2010-05-20 17:07 编辑
  1. awk 'NR==FNR{a[$1];next}{if(!($2 in a)) print}' a b
复制代码
不知道效率如何。。。。
作者: bbgg1983    时间: 2010-05-20 16:49
回复 3# lkk2003rty


    效率不错,就是++     ==
作者: iori809    时间: 2010-05-20 16:53
2楼的那种不行啊~试试看3楼的吧
作者: lkk2003rty    时间: 2010-05-20 17:01
回复 4# bbgg1983


    谢谢哈  已改正。。。敲键盘敲快了  没注意检查。。。
作者: renxiao2003    时间: 2010-05-20 17:02
UNIX/LINUX自带的diff命令很好用啊。
作者: HH106    时间: 2010-05-20 17:05
2楼的那种不行啊~试试看3楼的吧
iori809 发表于 2010-05-20 16:53



    怎么不行,有什么错误? grep效率最高
作者: iori809    时间: 2010-05-20 17:07
回复 8# HH106

[root@commserver: /tmp]#grep -vFf test94.txt test95.txt
[root@commserver: /tmp]#grep -vFf test95.txt test94.txt   
23232
454654
7687898
453454
[root@commserver: /tmp]#more test94.txt
23232
454654
7687898
453454
[root@commserver: /tmp]#more test95.txt  
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 7687898 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 7687898 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 23232 fdfdasd  dsds dasdfdfd grthjtjt
fdfd 453454 fdfdasd  dsds dasdfdfd grthjtjt


自己试试看吧呵呵
作者: HH106    时间: 2010-05-20 17:12
回复  HH106

[root@commserver: /tmp]#grep -vFf test94.txt test95.txt
[root@commserver: /tmp]#gr ...
iori809 发表于 2010-05-20 17:07


呵呵~~
怪我没写清楚
请这样写grep -vFf test94.txt test95.txt
作者: iori809    时间: 2010-05-20 17:14
回复 10# HH106


    不行啊~那种处理不了多列的好像~
你自己试试看吧~ 我在我的环境下不行
[root@commserver: /tmp]#grep -vFf test94.txt test95.txt
[root@commserver: /tmp]#
啥也不显示
作者: HH106    时间: 2010-05-20 17:17
回复 11# iori809


    test95.txt中包括test94.txt中所有行,当然就没输出
作者: blackold    时间: 2010-05-20 17:17
grep
作者: iori809    时间: 2010-05-20 17:20
回复 12# HH106


    - -~丢人了又~
不好意思啊哥们~ 不过好像不加F也可以

作者: HH106    时间: 2010-05-20 17:25
回复 14# iori809


    不加F是可以,但加F更快速
grep -F 相当于fgrep
作者: blackold    时间: 2010-05-20 17:33
回复 15# HH106


    正确。
作者: iori809    时间: 2010-05-20 17:40
回复 15# HH106


    明白了~fgrep 可以少过滤一些字符是吧?天天sed和awk了
看来grep也很厉害
作者: peacock66    时间: 2010-05-21 11:40
回复 2# HH106


很快

谢谢
作者: Shell_HAT    时间: 2010-05-21 11:53
回复 17# iori809


fgrep是字符串查找,不用正则,所以速度快。
作者: iori809    时间: 2010-05-21 12:00
回复 19# Shell_HAT


    感谢~HOHO~~~




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