免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3050 | 回复: 9
打印 上一主题 下一主题

高手帮忙:如何合并文本中相临的相同行(包括续行) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-26 10:13 |只看该作者 |倒序浏览
            

比如文本是一个非常大的文本,里面有很多完全一样的行,包括"\"的续行
如:

 I love shell = I love UC
 I love shell = I love UC
 I love shell = I love UC
   Pig is flying in the sky \
   and I am looking \
   at it
   Pig is flying in the sky \
   and I am looking \
   at it

   希望处理之后的结果是这样的:
 I love shell = I love UC (m=3)
   Pig is flying in the sky \
   and I am looking \
   at it (m=2)

请大家帮忙用cshell,AWK,SED...anything of Linux
实现此功能~~~ 谢谢

                
 

论坛徽章:
0
2 [报告]
发表于 2004-10-26 10:34 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

没人顶啊....自己顶一个先

论坛徽章:
0
3 [报告]
发表于 2004-10-26 19:26 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

原帖由 "sunkey" 发表:
            

比如文本是一个非常大的文本,里面有很多完全一样的行,包括"\"的续行
如:

 I love shell = I love UC
 I love shell = I love UC
 I l..........



nawk '{str=$0;while($0 like /\/$/){getline;str=str "〇"  $0}a[str]++}END{for(x in a){i=1;split(x,b,"〇";while(i<a[x])print b[i++];printf("%s (m=%d)\n",b,a[x])}}  infile


我的是日文键盘装了中文系统那个 波浪 的符号打不出来用 like 替代的

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-10-26 20:30 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

看不明白,帮你丁页

论坛徽章:
0
5 [报告]
发表于 2004-10-27 11:28 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

原帖由 "james_dlc" 发表:
nfile


我的是日文键盘装了中文系统那个 波浪 的符号打不出来用 like 替代的



景仰一下~~~~      

  
能不能解释一下程序的执行??另外,如果有空白行,那么这个程序也会把空白
的重复给算进去了...

论坛徽章:
0
6 [报告]
发表于 2004-10-28 10:33 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

原帖由 "sunkey" 发表:

  
能不能解释一下程序的执行??另外,如果有空白行,那么这个程序也会把空白
的重复给算进去了...



上次写的太繁琐了,另外对于空行的问题
修改了一下

nawk '$0{str=$0;while($0~/\/$/){getline;str=str "\n" $0}a[str]++}END{for(x in a)print x,"(m=" a[x] ""} infile

论坛徽章:
0
7 [报告]
发表于 2004-10-28 15:00 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

我也看不明白,帮你顶.

论坛徽章:
0
8 [报告]
发表于 2004-10-28 17:44 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

[quote]原帖由 "james_dlc"]infile[/quote 发表:




  实际上可能这样还是有问题的, 你把所有的LINE都存到数组里面,

如果是一个非常大(比如上百M)的文本而言,可能会有问题(虽然我没有试验)

而且效率可能不太好...

另外,如果存在换行的话呢??

论坛徽章:
0
9 [报告]
发表于 2004-10-28 19:36 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

原帖由 "sunkey" 发表:




  实际上可能这样还是有问题的, 你把所有的LINE都存到数组里面,

如果是一个非常大(比如上百M)的文本而言,可能会有问题(虽然我没有试验)

而且效率可能不太好...

另外,如果存在换行的话呢??


关于效率问题我认为在内存里处理数据是最快的,而且unix系统内存大都在1GB
以上,而且还可以使用磁盘缓存的。并且如是100M的文件平均相同行数为4的话
内存利用小于30M
如是个人电脑的话,相信你没有那么大的数据量。明天我找个2GB的文件试一下再给你答案。

另外,如果存在换行的话 ----不明白?如何样式的换行?不是以 \ 为结尾的?还请明示。

论坛徽章:
0
10 [报告]
发表于 2004-10-30 01:16 |只看该作者

高手帮忙:如何合并文本中相临的相同行(包括续行)

在单位试了一下,内存是32GB 用了个1。8GB的文件测试
自然们没问题,文件太大的话硬盘空间有问题,所以暂时无法回答你,抱歉
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP