红联Linux门户
Linux帮助

linux下两个比较文件不同的例子

发布时间:2007-05-15 11:32:36来源:红联作者:Dragoncity
例一:我要比较a和b两个文件并列出b文件中完全不包含a文件的行;
cat a
2
3
4
1
D1
D2

cat b
2
3
d2
d3
df
jd2
jd3
D1
D12
D2f
方法一:diff a b
方法二:
awk 'ARGIND==1{a[$0]} #if ARGIND=1 初始化(或叫做定义)a[$0]
ARGIND>1&&!($0 in a){print $0}' a b #if ARGIND>1并且a[$0]未定义,则打印$0
#ARGIND==1 判断是否正在处理第一个文件,本例为文件a
#ARGIND>1 判断是否在处理第二个或第n个文件,本例只有一个文件b

方法二主要是处理b文件和a文件的顺序不同,不能用diff比较,b基本上包含a的所有内容,但比a大的多,怎样将b中不包含a的内容列出来。awk处理多个文件的机制是按照文件名出现的顺序依次处理

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

b文件格式
10002
10006
10008

我想实现这样功能:如果a文件中某行第一个字段的值在b文件有,则删掉这行
使用代码:awk -F"|" 'NR==FNR{a[$0]}NR!=FNR&&!($1 in a){print $0}' b a
文章评论

共有 0 条评论