Chinaunix
标题:
AWK比较两个文件的不同数据
[打印本页]
作者:
Ienovo_qq
时间:
2015-06-12 16:52
标题:
AWK比较两个文件的不同数据
文件1 1340233
1340234
1350811
1360811
文件2 1340233
1350811
1360811
文件2与文件1进行比较,缺失的数据为
1340234
请大侠相助。
作者:
Buring__
时间:
2015-06-12 16:54
grep -Fvf file2 file1
1340234
复制代码
作者:
Ienovo_qq
时间:
2015-06-12 17:03
回复
2#
Buring__
谢谢,请用awk.
作者:
songyc_2015
时间:
2015-06-12 17:11
回复
1#
Ienovo_qq
awk 'FNR==NR{a[$0];next}!($0 in a)' file2 file1
awk 'FNR==NR{a[$0]=1;next}!a[$0]' file2 file1
复制代码
作者:
Ienovo_qq
时间:
2015-06-12 17:13
回复
4#
songyc_2015
谢谢!测试已OK.
作者:
小亮520cl
时间:
2015-06-12 17:14
本帖最后由 小亮520cl 于 2015-06-12 17:16 编辑
[root@gc1: /root/scripts]$ awk '{if(ARGIND==1) {val[$0]}else{if($0 in val) delete val[$0]}}END{for(i in val) print i}' file1 file2
1360811
作者:
drakness
时间:
2015-06-12 17:48
awk 'NR==FNR{a[$0]=1}{a[$0]?h=0:h=1}h' urfile2 urfile1
复制代码
作者:
reyleon
时间:
2015-06-12 17:56
回复
7#
drakness
肉眼扫描了下, 你这个测试OK不?
作者:
Herowinter
时间:
2015-06-12 17:57
回复
3#
Ienovo_qq
没特殊原因的话grep效率好一点吧.
作者:
Herowinter
时间:
2015-06-12 17:58
回复
8#
reyleon
少了个next?
作者:
reyleon
时间:
2015-06-12 18:01
回复
10#
Herowinter
总感觉少了点东西
作者:
drakness
时间:
2015-06-12 18:02
回复
8#
reyleon
我测试是没有问题的
作者:
drakness
时间:
2015-06-12 18:04
回复
11#
reyleon
head a1 a2
==> a1 <==
1
2
3
4
5
6
7
8
9
==> a2 <==
1
2
3
4
5
6
7
复制代码
测试
awk 'NR==FNR{a[$0]=1}{a[$0]?h=0:h=1}h' a2 a1
8
9
复制代码
作者:
Herowinter
时间:
2015-06-12 18:07
回复
13#
drakness
请运行 awk 'NR==FNR{a[$0]=1}{a[$0]?h=0:h=1}h' a1 a2
作者:
drakness
时间:
2015-06-12 18:14
回复
14#
Herowinter
有什么意义?
文件顺序弄反你要表达什么?
作者:
Herowinter
时间:
2015-06-12 18:25
回复
13#
drakness
好吧,如果楼主的需求是找出文件1中存在, 但文件2中不存在的行,
这代码没问题;但如果是标题那样找不同的数据,这代码有bug.
作者:
drakness
时间:
2015-06-12 18:32
回复
16#
Herowinter
先下班了,回头研究研究,看有没有更健壮的改法
作者:
zl624867243
时间:
2015-06-12 19:00
diff a b | tail -1 | awk '{print $2}'
复制代码
作者:
Windows19
时间:
2015-06-12 19:54
都是高手
作者:
lichmama
时间:
2015-06-15 13:47
为什么不是diff
$>diff a b
2d1
< 1340234
$>
复制代码
作者:
yiranhendai
时间:
2015-06-17 14:05
awk 'FNR==NR{S[$1]=$0}FNR!=NR{if(!S[$1])print }' file2 file1
作者:
fh21_xuejinlian
时间:
2016-08-31 18:10
awk 'NR==FNR{a[$1]=$1}!a[$1]{print $0}' file2 file1
作者:
sunzhiguolu
时间:
2016-08-31 18:39
perl -nle 'if(@ARGV){$h{$_}++;next}print if(!$h{$_})' b a
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2