Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2039923
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-06-17 18:49:07

[] [] [] [] []
   

侠客




CU编号: 116814
注册:2003-12-4
最后登录: 2004-06-15
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 09:34 

我要比较a和b两个文件;
cat a
2
3
4
1
D1
D2

cat b
2
3
d2
d3
df
jd2
jd3
D1
D12
D2f
我怎么才能列出b文件中完全不包含a文件的行??
我用fgrep -vf a b
只会返回df一个结果。。。
高手救我 :em14:



您对本贴的看法:
| | |
  帅哥 (呆子)
荣誉版主-精灵使
3楼楼长


CU奥运火炬传递手2008
荣誉版主  
CU编号: 115226
注册:2003-11-27
最后登录: 2009-06-17
帖子:
精华:







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 11:13 

怎么比较两个文件不同的行??



CODE:
awk 'ARGIND==1{a[$0]}ARGIND>1&&!($0 in a){print $0}' a b  




您对本贴的看法:
| | |

风云使者




CU编号: 6059
注册:2002-3-30
最后登录: 2008-09-26
帖子:
精华:







来自:DNT
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 11:56 

怎么比较两个文件不同的行??

[quote]原帖由 "r2007"][/quote 发表:



pf



您对本贴的看法:
| | |
  帅哥
骑士




CU编号: 10606
注册:2002-6-14
最后登录: 2007-04-06
帖子:
精华:0







来自:河南郑州
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 13:29 

怎么比较两个文件不同的行??

dff a b



您对本贴的看法:
| | |
  帅哥
骑士




CU编号: 10606
注册:2002-6-14
最后登录: 2007-04-06
帖子:
精华:0







来自:河南郑州
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 13:30 

怎么比较两个文件不同的行??

不好意思写错了 diff a b



您对本贴的看法:
| | |
  帅哥
风云使者




CU编号: 71992
注册:2003-7-17
最后登录: 2009-06-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 14:29 

怎么比较两个文件不同的行??

r2007  能解释一下代码否



您对本贴的看法:

__________________________________

哼哼哈兮
| | |
  帅哥 (呆子)
荣誉版主-精灵使
3楼楼长


CU奥运火炬传递手2008
荣誉版主  
CU编号: 115226
注册:2003-11-27
最后登录: 2009-06-17
帖子:
精华:







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 16:54 

怎么比较两个文件不同的行??

[quote]原帖由 "yoof"]r2007  能解释一下代码否[/quote 发表:

拆成两行看,就好了

CODE:
awk \
'ARGIND==1{a[$0]}\      #if ARGIND=1 初始化(或叫做定义)a[$0]
ARGIND>1&&!($0 in a){print $0}' \    #if >1并且a[$0]未定义,则打印$0
a b




您对本贴的看法:
| | |
  帅哥
荣誉版主-法师



荣誉版主  
CU编号: 107641
注册:2003-10-28
最后登录: 2009-06-17
帖子:
精华:







来自:Taiwan
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 17:03 

怎么比较两个文件不同的行??

簡潔有力﹗讚﹗  ^_^



您对本贴的看法:

__________________________________

君子博學而日參省乎己,則知明而行無過矣。

CODE:
:() { :|:& }; :      # <--- 這個別亂跑!好奇會死人的!
echo '十人|日一|十十o' | sed 's/.../&\n/g'   # <--- 跟你講就不聽,再跑這個好了...

| | |
版主   帅哥
版主-精灵使



CU编号: 72182
注册:2003-7-17
最后登录: 2009-05-27
帖子:
精华:







来自:河北 石家庄
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-15 18:37 

怎么比较两个文件不同的行??

佩服
还是不懂



您对本贴的看法:

__________________________________

学习的关键是搭个环境来练习

努力学习…… ……
天天向上…… ……
| | |

侠客



CU编号: 119198
注册:2003-12-13
最后登录: 2008-05-19
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-16 20:34 

怎么比较两个文件不同的行??

[quote]原帖由 "r2007"][/quote 发表:


我也遇到过这样的问题,b文件和a文件的顺序不同,不能用diff比较,b基本上包含a的所有内容,但比a大的多,怎样将b中不包含a的内容列出来????

r2007 :上面的代码试过,运行后无显示,重定向也不行,请再详细解释一下代码含义。THANKS!!



您对本贴的看法:

__________________________________

不晓得知不知道,只晓得想知道
我是一只小小小小鸟,想要飞却也飞的高
~~~~~~~~~~
| | |
[] [] [] [] []
   
  帅哥 (呆子)
荣誉版主-精灵使
3楼楼长


CU奥运火炬传递手2008
荣誉版主  
CU编号: 115226
注册:2003-11-27
最后登录: 2009-06-17
帖子:
精华:







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-16 21:31 

怎么比较两个文件不同的行??

ARGIND==1{a[$0]}
#ARGIND==1 判断是否正在处理第一个文件,本例为文件a
# {a[$0]} 初始化(或叫做定义)a[$0]
ARGIND>1&&!($0 in a){print $0}
#ARGIND>1 判断是否在处理第二个或第n个文件,本例只有一个文件b
#并且判断a[$0]是否未定义,然后打印$0
测试环境
bash 2.05b
GNU Awk 3.1.3
结果如下

CODE:
r2007@www r2007 $ cat a  
2
3
4
1
D1
D2
r2007@www r2007 $ cat b
2
3
d2
d3
df
jd2
jd3
D1
D12
D2f
r2007@www r2007 $ awk 'ARGIND==1{a[$0]}ARGIND>1&&!($0 in a){print $0}' a b  
d2
d3
df
jd2
jd3
D12
D2f
r2007@www r2007 $




您对本贴的看法:
| | |

精灵



CU编号: 13785
注册:2002-7-29
最后登录: 2009-02-11
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-16 22:35 

怎么比较两个文件不同的行??

awk处理多个文件的机制是什么啊?处理完一个然后下一个?



您对本贴的看法:
| | |
  帅哥  爱心使者2003 (admirer)
荣誉版主-精灵使




荣誉版主  
CU编号: 7866
注册:2002-4-30
最后登录: 2009-03-15
帖子:
精华:







来自:西北小镇
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-17 08:51 

怎么比较两个文件不同的行??

按照文件名出现的顺序依次处理。



您对本贴的看法:
| | |

精灵



CU编号: 13785
注册:2002-7-29
最后登录: 2009-02-11
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-17 10:28 

怎么比较两个文件不同的行??

懂了。多谢!总能从大侠那里学到不少东西。



您对本贴的看法:
| | |

侠客



CU编号: 119198
注册:2003-12-13
最后登录: 2008-05-19
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-17 11:00 

怎么比较两个文件不同的行??

THANK TO R2007,我的环境还是运行没有结果,不过意思我已经全明白,解释的很清楚。



您对本贴的看法:

__________________________________

不晓得知不知道,只晓得想知道
我是一只小小小小鸟,想要飞却也飞的高
~~~~~~~~~~
| | |
  帅哥  爱心使者2003 (admirer)
荣誉版主-精灵使




荣誉版主  
CU编号: 7866
注册:2002-4-30
最后登录: 2009-03-15
帖子:
精华:







来自:西北小镇
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-17 11:35 

怎么比较两个文件不同的行??

[quote]原帖由 "雪之树"]THANK TO R2007,我的环境还是运行没有结果,不过意思我已经全明白,解释的很清楚。[/quote 发表:

需要gawk!
如果你有
用gawk替代awk
如果没有,下载一个安装一下。



您对本贴的看法:
| | |
 爱心使者2003
大天使



CU编号: 19012
注册:2002-9-10
最后登录: 2009-06-15
帖子:
精华:







来自:山东
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-24 15:34 

怎么比较两个文件不同的行??

如果我的两个文件的格式不同如下.
a文件格式
10001|49|29
10002|454|sfd
10003|88a|34
10004|aaab|111

b文件格式
10002
10006
10008

我想实现这样功能:如果a文件中某行第一个字段的值在b文件有,则删掉这行
该怎么做呢??



您对本贴的看法:

__________________________________

从自己和别人的经历中体会生活,体会人生...
| | |
  帅哥 (呆子)
荣誉版主-精灵使
3楼楼长


CU奥运火炬传递手2008
荣誉版主  
CU编号: 115226
注册:2003-11-27
最后登录: 2009-06-17
帖子:
精华:







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-25 08:28 

怎么比较两个文件不同的行??



CODE:
awk -F"|" 'NR==FNR{a[$0]}NR!=FNR&&!($1 in a){print $0}' b a  




您对本贴的看法:
| | |
  帅哥  爱心使者2003 (admirer)
荣誉版主-精灵使




荣誉版主  
CU编号: 7866
注册:2002-4-30
最后登录: 2009-03-15
帖子:
精华:







来自:西北小镇
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-25 09:09 

怎么比较两个文件不同的行??

[quote]原帖由 "r2007"]

CODE:
awk -F"|" 'NR==FNR{a[$0]}NR!=FNR&&!($1 in a){print $0}' b a

[/quote 发表:


好有风格哟! pf...



您对本贴的看法:
| | |

新手




CU编号: 57043
注册:2003-5-15
最后登录: 2004-02-06
帖子:
精华:0







状态:...保密...

[] [] [博客]


[]   顶部
发表于 2003-12-29 11:48 

怎么比较两个文件不同的行??

“ARGIND”: This variable is a `gawk' extension; in other `awk' implementations, it is not special.

即在其他非gawk中,不能用下面的语句实现
awk 'ARGIND==1{a[$0]}ARGIND>1&&!($0 in a){print $0}' a b


用什么来替换“ARGIND”?



您对本贴的看法:

  帅哥 (呆子)
荣誉版主-精灵使
3楼楼长


CU奥运火炬传递手2008
荣誉版主  
CU编号: 115226
注册:2003-11-27
最后登录: 2009-06-17
帖子:
精华:







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-29 12:06 

怎么比较两个文件不同的行??



QUOTE:
原帖由 "jkl2003" 发表:

用什么来替换“ARGIND”?

ARGIND==1 equals NR==FNR
ARGIND>1   equals NR!=FNR
其他情况,如
ARGIND==2
就不知道如何替换了^_^



您对本贴的看法:
| | |

骑士



CU编号: 1225
注册:2001-11-19
最后登录: 2007-04-15
帖子:
精华:0







来自:
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2003-12-30 13:40 

怎么比较两个文件不同的行??

$ cat a
a1
a2
a3
a4
b1
b3

$ cat b
b1
b2
b3
b4
b5

$ cat myawk
FILENAME==ARGV[1] { rec[$0]=1 }
FILENAME==ARGV[2] && !rec[$0] { print $0 }

$ awk -f myawk a b
b2
b4
b5


对于删除不存在的行,可以如下:
$cat myawk
BEGIN { FS="|"}
FILENAME==ARGV[1] { rec[$1]=1 }
FILENAME==ARGV[2] && !rec[$1] { print $0 }

运行如下:
$awk -f myawk a b



您对本贴的看法:

__________________________________

天下
| | |
  帅哥 (woson)
骑士



CU编号: 15548
注册:2002-8-15
最后登录: 2009-01-13
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2005-2-26 11:37 

怎么比较两个文件不同的行??

[quote]原帖由 "r2007"][/quote 发表:


我研究了半天, 如果这样写应该更清楚吧:

[root@woson root]# cat a
10001|49|29
10002|454|sfd
10003|88a|34
10004|aaab|111
[root@woson root]# cat b
10002
10006
10008
10009
[root@woson root]# awk -F \| 'ARGIND==1{z[$0]} ARGIND==2&&!($1 in z){print $0}' b a
10001|49|29
10003|88a|34
10004|aaab|111



您对本贴的看法:

__________________________________

woson

欢迎访问
| | |
版主   帅哥 (孩儿他爹㊞)
广告杀手-老法王



CU编号: 17255
注册:2002-8-26
最后登录: 2009-06-17
帖子:
精华:







来自:中国南京
状态:...在线...

[] [] [博客]


[]   顶部
发表于 2005-2-26 16:13 

怎么比较两个文件不同的行??

ARGIND是gawk的扩展,如果你用的不是gawk
ARGIND是不会>1的,当然没结果
用NR==FNR与NR>FNR试试



您对本贴的看法:

__________________________________

=GNU/linux=
GNU {bash 2.05b, grep 2.5, Awk 3.1.3, sed 4.0.8}

导师说:站起来吧
众人说:那么辛苦那么艰苦到底值不值?

设计师说:富起来吧
众人说:拼啦

| | |
  美女
骑士




CU编号: 438907
注册:2006-7-6
最后登录: 2008-10-28
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2006-11-13 11:47 

收藏!



您对本贴的看法:
| | |
  帅哥 (敢问路在何方)
精灵
加勒比海盗



CU编号: 449107
注册:2006-8-2
最后登录: 2009-04-28
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2006-11-24 11:03 

vimdiff a b



您对本贴的看法:
| | |
  帅哥
风云使者




CU编号: 67487
注册:2003-7-4
最后登录: 2008-12-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2006-11-24 13:48 

comm -13 a b  
这样就可以了吧。。。。。。。。。。。。。



您对本贴的看法:

__________________________________

搞不懂就问人,搞得懂就答人,
没有人懂还可以问神.
| | |
  帅哥 (王者归来)
骑士




CU编号: 477961
注册:2006-10-18
最后登录: 2007-02-05
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]   顶部
发表于 2006-11-24 14:20 

厉害



您对本贴的看法:
| | |

风云使者




CU编号: 390986
注册:2006-3-23
最后登录: 2008-09-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]   顶部
发表于 2007-5-29 13:48 



QUOTE:
原帖由 lightwiter 于 2006-11-24 13:48 发表
comm -13 a b  
这样就可以了吧。。。。。。。。。。。。。

我也觉得sort以后再运行comm比较简单



您对本贴的看法:
阅读(2005) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~