用awk 写个脚本,比较三个文件,只要两个不同就打印出来,要求如下:

file1:cpucore0:2010/09/10aaa0x0011111112010/09/10aaa0x0022222222010/09/10aaa0x0033333... file1:
cpu core 0:
2010/09/10 aaa 0x001 111111
2010/09/10 aaa 0x002 222222
2010/09/10 aaa 0x003 333333
cpu core 1:
2010/09/10 aaa 0x001 111111
2010/09/10 aaa 0x002 222222
2010/09/10 aaa 0x003 333333
file2:
cpu core 0:
2010/09/10 aaa 0x001 111111
2010/09/10 aaa 0x002 222222
2010/09/10 aaa 0x003 333333
cpu core 1:
2010/09/10 aaa 0x001 111111
2010/09/10 aaa 0x002 222222
2010/09/10 aaa 0x003 333334
file3:
cpu core 0:
2010/09/10 aaa 0x001 111112
2010/09/10 aaa 0x002 222222
2010/09/10 aaa 0x003 333333
cpu core 1:
2010/09/10 aaa 0x001 111111
2010/09/10 aaa 0x002 222222
2010/09/10 aaa 0x003 333333

输出格式为:
core 0:
aaa 0x001 file1 111111 file2 111111 file3 111112
core 1:
aaa 0x003 file1 333333 file2 333334 file3 333333
展开
 我来答
yuezy3
2011-10-24 · TA获得超过106个赞
知道答主
回答量:34
采纳率:0%
帮助的人:38.8万
展开全部
OK,我这里要对你的题目进行一些假设,如果假设的不对,请你再追问,好吗?
假设1:每个文件中的日期:2010/09/10总是相同的,或者即使不同也不影响输出。
假设2:每个文件的第二列:aaa总是相同的,或者即使不同也不影响输出。
假设3:每个文件只有在第三列:0x00X相同时,才比较后面的五位数字。如果不同,则依据你给定的格式输出。
假设4:每个文件core0下的行数均相同,core1下的行数叶相同。
假设5:每个文件的core0与core1分别对待
程序如下

BEGIN {i=1;}
{if(curfn != FILENAME)
{curfn = FILENAME;files[i]=curfn;i++;j=1;}
}
{if($1=="cpu")
{curcore=$3;curcores[j] = $3;j++;k=1;}
else
{lines[curcore,k]=$3;array[curfn,curcore,$3]=$4;k++;}
}
END {
for(var in lines){
split(var,headers,SUBSEP);
if(!((array[files[1],headers[1],lines[var]]==\
array[files[2],headers[1],lines[var]])&&\
(array[files[2],headers[1],lines[var]]==\
array[files[3],headers[1],lines[var]])))
{
print "core" headers[1] ;
printf "aaa " lines[var] " ";
printf files[1] " " array[files[1],headers[1],lines[var]] " ";
printf files[2] " " array[files[2],headers[1],lines[var]]" ";
print files[3] " " array[files[3],headers[1],lines[var]];
}
}
}

这个程序在我电脑上的gawk3.16上运行成功。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式