免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chiyiangel
打印 上一主题 下一主题

求教找出目录下文件内容中完全重复的行 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-06-03 10:53 |只看该作者
哇,三层循环加过滤...

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
12 [报告]
发表于 2011-06-03 11:06 |只看该作者
须求不明+1

论坛徽章:
0
13 [报告]
发表于 2011-06-03 12:49 |只看该作者
按你给的文件顺序1.sql 2.sql 3.sql,6楼代码结果
  1. ywlscpl@ubuntu:~$ find . -name "*.sql" -type f -print
  2. ./2.sql
  3. ./1.sql
  4. ./d1/3.sql
  5. ywlscpl@ubuntu:~$ sh comm.sh
  6. ./d1/3.sql:line 17==>./2.sql:line 5
  7. ./d1/3.sql:line 19==>./2.sql:line 7
  8. ./d1/3.sql:line 21==>./2.sql:line 9
  9. ./d1/3.sql:line 7==>./1.sql:line 3
  10. ./d1/3.sql:line 9==>./1.sql:line 5
复制代码

论坛徽章:
0
14 [报告]
发表于 2011-06-03 14:22 |只看该作者
回复 13# ywlscpl


   谢谢热心的大哥 现在可以了 ...  我把条件改称了 /^go/  可能是awk 的版本问题 ....
不过现在 又有新的问题了   我发现在需要过滤得这些.sql脚本里有很多 空白行 还有很多括号 单占一行 我不想把这些过滤出来 我只想 过滤一下insert 或者 create 的开头的 相同的语句 ....

论坛徽章:
0
15 [报告]
发表于 2011-06-03 14:36 |只看该作者

  1. /tmp/test.pl   内容如下:

  2. #!/usr/bin/perl
  3. while($f=<STDIN>)
  4. {
  5.         $i=1;
  6.         chomp $f;
  7.         open($fh,"<",$f);
  8.         while(<$fh>)
  9.         {
  10.                 chomp;
  11.                 next if not /^(insert|create)/;
  12.                 $a{$_}=sprintf("%s\n%s[%d]",$a{$_},$f,$i++);
  13.         }
  14.         close($fh);
  15. }
  16. while(my($sql,$files)=each(%a))
  17. {
  18.         next if not $files=~/\n.*\n/;
  19.         printf "%s%s\n",$sql,$files;
  20. }


  21. 然后 chmod +x /tmp/test.pl

  22. find 目录 -type f -name "*.sql" | /tmp/test.pl

  23. 条件是你的insert或者create语句是单独一行,并且create或者insert是顶格写
复制代码

论坛徽章:
0
16 [报告]
发表于 2011-06-03 15:31 |只看该作者
本帖最后由 ywlscpl 于 2011-06-03 15:36 编辑

回复 14# chiyiangel


    空白行 还有很多括号 单占一行

这些都加到例外判断里awk '/^ *go *$/||!NF||/^ *{ *$/||/^ *} *$/{next}

或直接  awk '!/^ *insert/||!/^ *create/{next}

论坛徽章:
0
17 [报告]
发表于 2011-06-03 15:45 |只看该作者
回复 16# ywlscpl


    非常感谢这位大哥 太热心了  待会儿试下看 ...   谢谢

论坛徽章:
0
18 [报告]
发表于 2011-06-03 15:47 |只看该作者
回复 15# springwind426

非常感谢... 但是用你的脚本来跑得话 过滤出来的东西 不正确阿...  比如用这个脚本来过滤上面的例子  结果是这个
  1. insert into pub_billtemplet_b(cardflag,datatype,defaultshowname,defaultvalue,dr,editflag,editformula,foreground,hyperlinkflag,idcolname,inputlength,itemkey,itemtype,leafflag,listflag,listshowflag,loadformula,lockflag,metadatapath,metadataproperty,metadatarelation,newlineflag,nullflag,options,pk_billtemplet,pk_billtemplet_b,pk_corp,pos,reftype,resid,resid_tabname,reviseflag,showflag,showorder,table_code,table_name,totalflag,ts,userdefflag,userdefine1,userdefine2,userdefine3,usereditflag,userflag,userreviseflag,usershowflag,validateformula,width) values(1,-1,null,null,0,0,null,-1,'N',null,-1,'modifier',0,'N',1,'Y',null,0,'modifier','ncaam.appassetversion.modifier',null,'N',0,null,'1027Z1100000000005G5','1027Z1100000000005GE','@@@@',2,null,null,null,'N',1,3,'audit','审计信息',0,'2010-06-18 15:55:15','N',null,null,null,1,1,'N',1,null,1)

  2. ./003.sql[4]
  3. ./002.sql[10]
  4. insert into pub_billtemplet_b(cardflag,datatype,defaultshowname,defaultvalue,dr,editflag,editformula,foreground,hyperlinkflag,idcolname,inputlength,itemkey,itemtype,leafflag,listflag,listshowflag,loadformula,lockflag,metadatapath,metadataproperty,metadatarelation,newlineflag,nullflag,options,pk_billtemplet,pk_billtemplet_b,pk_corp,pos,reftype,resid,resid_tabname,reviseflag,showflag,showorder,table_code,table_name,totalflag,ts,userdefflag,userdefine1,userdefine2,userdefine3,usereditflag,userflag,userreviseflag,usershowflag,validateformula,width) values(1,-1,null,null,0,1,null,-1,'N',null,-1,'venddate',0,'N',1,'Y',null,0,'venddate','ncaam.appassetversion.venddate',null,'N',0,null,'1027Z1100000000005G5','1027Z1100000000005GC','@@@@',0,null,null,null,'N',1,6,'appassetversionHVO','appassetversionHVO',0,'2010-06-18 15:55:15','N',null,null,null,1,1,'N',1,null,1)

  5. ./001.sql[4]
  6. ./002.sql[8]
  7. insert into pub_billtemplet_b(cardflag,datatype,defaultshowname,defaultvalue,dr,editflag,editformula,foreground,hyperlinkflag,idcolname,inputlength,itemkey,itemtype,leafflag,listflag,listshowflag,loadformula,lockflag,metadatapath,metadataproperty,metadatarelation,newlineflag,nullflag,options,pk_billtemplet,pk_billtemplet_b,pk_corp,pos,reftype,resid,resid_tabname,reviseflag,showflag,showorder,table_code,table_name,totalflag,ts,userdefflag,userdefine1,userdefine2,userdefine3,usereditflag,userflag,userreviseflag,usershowflag,validateformula,width) values(1,-1,null,null,0,0,null,-1,'N',null,-1,'creator',0,'N',1,'Y',null,0,'creator','ncaam.appassetversion.creator',null,'N',0,null,'1027Z1100000000005G5','1027Z1100000000005GD','@@@@',2,null,null,null,'N',1,1,'audit','审计信息',0,'2010-06-18 15:55:15','N',null,null,null,1,1,'N',1,null,1)

  8. ./003.sql[3]
  9. ./002.sql[9]
  10. insert into pub_billtemplet_b(cardflag,datatype,defaultshowname,defaultvalue,dr,editflag,editformula,foreground,hyperlinkflag,idcolname,inputlength,itemkey,itemtype,leafflag,listflag,listshowflag,loadformula,lockflag,metadatapath,metadataproperty,metadatarelation,newlineflag,nullflag,options,pk_billtemplet,pk_billtemplet_b,pk_corp,pos,reftype,resid,resid_tabname,reviseflag,showflag,showorder,table_code,table_name,totalflag,ts,userdefflag,userdefine1,userdefine2,userdefine3,usereditflag,userflag,userreviseflag,usershowflag,validateformula,width) values(1,-1,null,null,0,1,null,-1,'N',null,-1,'vstartdate',0,'N',1,'Y',null,0,'vstartdate','ncaam.appassetversion.vstartdate',null,'N',0,null,'1027Z1100000000005G5','1027Z1100000000005GB','@@@@',0,null,null,null,'N',1,5,'appassetversionHVO','appassetversionHVO',0,'2010-06-18 15:55:15','N',null,null,null,1,1,'N',1,null,1)

  11. ./001.sql[3]
  12. ./002.sql[7]
  13. insert into pub_billtemplet_t(basetab,dr,metadataclass,metadatapath,mixindex,pk_billtemplet,pk_billtemplet_t,pk_layout,pos,position,resid,tabcode,tabindex,tabname,ts,vdef1,vdef2,vdef3) values(null,0,'ncaam.appassetversion',null,null,'1027Z1100000000005G5','1004Z11000000000LEUD','~',0,0,null,'appassetversionHVO',0,'应用资产版本表头','2010-06-18 15:55:15',null,null,null)

  14. ./003.sql[1]
  15. ./002.sql[3]
  16. insert into pub_billtemplet_b(cardflag,datatype,defaultshowname,defaultvalue,dr,editflag,editformula,foreground,hyperlinkflag,idcolname,inputlength,itemkey,itemtype,leafflag,listflag,listshowflag,loadformula,lockflag,metadatapath,metadataproperty,metadatarelation,newlineflag,nullflag,options,pk_billtemplet,pk_billtemplet_b,pk_corp,pos,reftype,resid,resid_tabname,reviseflag,showflag,showorder,table_code,table_name,totalflag,ts,userdefflag,userdefine1,userdefine2,userdefine3,usereditflag,userflag,userreviseflag,usershowflag,validateformula,width) values(1,-1,null,null,0,1,null,-1,'N',null,-1,'vname',0,'N',1,'Y',null,0,'vname','ncaam.appassetversion.vname',null,'N',0,null,'1027Z1100000000005G5','1027Z1100000000005GA','@@@@',0,null,null,null,'N',1,4,'appassetversionHVO','appassetversionHVO',0,'2010-06-18 15:55:15','N',null,null,null,1,1,'N',1,null,1)

  17. ./001.sql[2]
  18. ./002.sql[6]
复制代码

论坛徽章:
0
19 [报告]
发表于 2011-06-03 15:53 |只看该作者
本帖最后由 ywlscpl 于 2011-06-03 15:56 编辑

回复 14# chiyiangel

/^ *go/不匹配,/^go/能匹配
    晕,你什么awk版本? 连/ */都不支持?

论坛徽章:
0
20 [报告]
发表于 2011-06-03 15:58 |只看该作者
回复 19# ywlscpl


    如果用/^ *insert */ 就过滤不出来
   要用/^insert/ 才行 还好 这些脚本 都是insert 开头的 呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP