在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2812|回复: 4

[求助] 请教一个用脚本处理文本的问题

[复制链接]
发表于 2011-6-28 00:45:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
有一个文本 每行用空格分成了3段  一共大概 几十行 格式如下:
xxx     aaa    1000
xxx     aaa    999
xxx     aaa    998
...
xxx     aaa    123
yyy      aaa    890
yyy      aaa    870
yyy      aaa    230

第一段有很多行是重复的 第二段都一样 第三段是数字 在第一段相同的行里逐渐减小

我想 把每行第一段相同的行中  数字最大的扣出来 其他不要  如果是上面的例子既输出:
xxx    aaa    1000
yyy    aaa     890
想用perl或者shell  请高手给个例子
发表于 2011-7-1 17:18:50 | 显示全部楼层
#!usr/bin/perl
open (fp,"file.txt");# file.txt 保存你需要处理的数据
open (fp_out,">file_out.txt");#file_out.txt保存处理后的结果
seek (fp,0,0);
while(<fp>)
{
   chomp($_);
   s/^\s+|\s+$//g;
   my($blk1,$blk2,$blk3)= /(\S+)\s+(\S+)\s+(\S+)/;
   if($my_hash{$blk1} <= $blk3) #undef can be treated as 0
    {
          $my_hash{$blk1} = $blk3;
    }
}

while(($key,$value) = each %my_hash)
{
    print fp_out "$key $blk2 $value\n";
}
close(fp);
close(fp_out);
发表于 2011-7-1 17:30:15 | 显示全部楼层
第一段的内容相同的行中,选择第三段值最大的保留,行与行之间可以支持任意顺序排列。
仅供参考,请多指教!
发表于 2011-7-11 20:37:09 | 显示全部楼层
open(FILEIN ,"a.txt") or die "fail to open\n";
open(FILEOUT ,"out.txt") or die "fail to open\n";
my @temp=<FILEIN>;
sort(@temp);
for($i=0;$i<$#temp;$i++)
{
        print FILEOUT $temp[$i]."\n";
}

然后out.txt就是很简单的排序了
发表于 2011-7-27 17:35:46 | 显示全部楼层
perl我刚刚学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 12:51 , Processed in 0.018997 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表