免费注册 查看新帖 |

Chinaunix

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

字符串分割问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-25 21:23 |只看该作者 |倒序浏览
cat file

12345678912345
23456789900086
12345678903424
32445434325767
...

分割成:

12,345,678,9123,45
23,456,789,9000,86
12,345,678,9034,24
32,445,434,3257,67
...

用什么方法效率较高?

论坛徽章:
0
2 [报告]
发表于 2007-07-25 21:46 |只看该作者
什么方法效率最高不敢妄下结论


  1. sed 's/\(..\)\(...\)\(...\)\(....\)\(..\)/\1,\2,\3,\4,\5/' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-07-25 22:14 |只看该作者
awk '{a1=substr($1,1,2);a2=substr($1,3,3);a3=substr($1,6,3);a4=substr($1,9,4);a5=substr($1,13);print a1,a2,a3,a4,a5}' file

因为要处理的文件有1M左右,而且要连续不断地处理,所以性能是需要考虑的。特别是CPU和IO
不知道上面的方法跟你的方法比起来哪个好。

有没有高手分析一下。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2007-07-25 23:16 |只看该作者
while read str;do echo ${str:0:2},${str:2:3},${str:5:3},${str:8:4},${str:12:2};done<urfile

论坛徽章:
0
5 [报告]
发表于 2007-07-26 10:17 |只看该作者
1M并不算大,如果数据格式不变,可以采用这种比较不灵活的办法,效率应该能比脚本高点?没比较过

  1. #include <stdio.h>

  2. int main(int argc, char *argv[])
  3. {
  4.         char buff[128];
  5.         FILE *fp;

  6.         if (argc != 2)
  7.         {
  8.                 printf("USAGE: %s file.txt\n", argv[0]);
  9.                 return 1;
  10.         }

  11.         if ((fp = fopen(argv[1], "r")) == NULL)
  12.         {
  13.                 printf("can't open %s\n", argv[1]);
  14.                 return 1;
  15.         }       

  16.         while (fscanf(fp, "%s\n", buff) > 0)
  17.         {
  18.                 printf("%c%c,%c%c%c%,%c%c%c,%c%c%c%c,%c%c\n", \
  19.                         buff[0], buff[1], buff[2], buff[3], buff[4], buff[5], buff[6], \
  20.                         buff[7], buff[8], buff[9], buff[10], buff[11], buff[12], buff[13]);
  21.         }
  22.        

  23.         fclose(fp);
  24.         return 0;
  25. }
复制代码

  1. gcc a.c -o a.out
  2. a.out test.txt
复制代码

论坛徽章:
0
6 [报告]
发表于 2007-07-26 11:11 |只看该作者
建议用楼二方法,方便,简易,一条指命完成,效率也不错的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP