亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 15527 | 回復(fù): 60
打印 上一主題 下一主題

[文本處理] 練習(xí)題(排序合并) [復(fù)制鏈接]

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-01-16 11:02 |只看該作者 |倒序?yàn)g覽
騷年們,我又來出題了,這題跟昨天某人發(fā)的那題類似,屬于加強(qiáng)版。

處理前(亂序):
  1. pear    mouse107
  2. pear    mouse123
  3. pear    mouse109
  4. pear    mouse125
  5. apple   cat123
  6. pear    dog105
  7. pear    dog101
  8. apple   cat12
  9. pear    dog104
  10. apple   cat108
  11. pear    dog11
  12. apple   cat125
  13. apple   cat106
  14. pear    mouse108
  15. pear    mouse106
  16. apple   cat107
  17. pear    dog103
  18. apple   cat109
復(fù)制代碼
處理后:
  1. apple: cat12,cat106-109,cat123,cat125
  2. pear: dog11,dog101,dog103-105,mouse106-109,mouse123,mouse125
復(fù)制代碼
處理要求:
1.根據(jù)第一列分類,對第二列進(jìn)行合并,連續(xù)的用破折號相連,不連續(xù)的用逗號隔開,按照ACSII碼順序?qū)ψ宇悾ɡ鏿ear的dog和mouse)進(jìn)行排序;
2.能用純awk或perl做出來最好。

以下是我的代碼,為了不影響大家的思路,我先隱藏起來。
游客,如果您要查看本帖隱藏內(nèi)容請回復(fù)

論壇徽章:
15
2015年辭舊歲徽章
日期:2015-03-03 16:54:15雙魚座
日期:2015-01-15 17:29:44午馬
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉雞
日期:2014-04-02 12:24:51雙子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥豬
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大;照
日期:2013-04-17 11:48:45
2 [報(bào)告]
發(fā)表于 2014-01-16 12:37 |只看該作者
本帖最后由 rdcwayx 于 2014-01-16 12:38 編輯

回復(fù) 1# yestreenstars
回復(fù)了,但我也把代碼隱藏了。
游客,如果您要查看本帖隱藏內(nèi)容請回復(fù)


   

論壇徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
3 [報(bào)告]
發(fā)表于 2014-01-16 12:51 |只看該作者
  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  3. function zuhe($key ,$array) {
  4.     sort($array);
  5.     $res='';
  6.     $len = count($array);
  7.     for($i=0;$i<$len;$i++)
  8.     {
  9.         if($i==0) {
  10.             $tmp=$str=$key.$array[$i];
  11.             continue;
  12.         }
  13.         if($i > 0) {
  14.             if($array[$i]==$array[$i-1]+1){
  15.                 $str=$tmp."-" . $array[$i];
  16.             }
  17.             if($array[$i]!=$array[$i-1]+1){
  18.                 $str=$str. "," .$key.$array[$i];
  19.                 $tmp = $str;
  20.             }
  21.         } } return $str; }
  22. $fp = fopen('test.txt', "r") or die("Unable to open file!");
  23. $res = array();
  24. $result ='';
  25. $num_result='';
  26. $reg='/[a-z]+/';
  27. $num_reg='/[0-9]+/';
  28. while(!feof($fp)) {
  29.     $line = fgets($fp, 1024);
  30.     $tmp = explode(" ",$line);
  31.     preg_match($reg,$tmp[count($tmp)-1],$result);
  32.     preg_match($num_reg,$tmp[count($tmp)-1],$num_result);
  33.     $res[$tmp['0']][$result['0']][] = $num_result['0'];
  34. }
  35. foreach ($res as $key => $v){
  36.     ksort($v);
  37.     $res1[$key]=$v;
  38. }
  39. foreach ($res1 as $key => $v) {
  40.     $k=1;
  41.     if($key=='')break;
  42.     echo $key.": ";
  43.     foreach ($v as $vk => $vv) {
  44.         if($k>1)echo ",";
  45.         echo zuhe($vk,$vv);
  46.         $k++;
  47.     }
  48.     echo "\n";
  49. }
復(fù)制代碼
  1. [root@everIover ~]# cat test.txt
  2. pear    mouse107
  3. pear    mouse123
  4. pear    mouse109
  5. pear    mouse125
  6. apple   cat123
  7. pear    dog105
  8. pear    dog101
  9. apple   cat12
  10. pear    dog104
  11. apple   cat108
  12. pear    dog11
  13. apple   cat125
  14. apple   cat106
  15. pear    mouse108
  16. pear    mouse106
  17. apple   cat107
  18. pear    dog103
  19. apple   cat109
  20. [root@everIover ~]# php test2.php
  21. pear: dog11,dog101,dog103-105,mouse106-109,mouse123,mouse125
  22. apple: cat12,cat106-109,cat123,cat125
  23. [root@everIover ~]#
復(fù)制代碼

論壇徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [報(bào)告]
發(fā)表于 2014-01-16 12:53 |只看該作者
回復(fù) 1# yestreenstars
awk 處理 邏輯有點(diǎn)混亂,我繞過來,只好用php了,不要歧視我大php


   

論壇徽章:
15
2015年辭舊歲徽章
日期:2015-03-03 16:54:15雙魚座
日期:2015-01-15 17:29:44午馬
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉雞
日期:2014-04-02 12:24:51雙子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥豬
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大;照
日期:2013-04-17 11:48:45
5 [報(bào)告]
發(fā)表于 2014-01-16 12:55 |只看該作者
用php很好啊, 只要自己熟練,達(dá)到效果就可以了

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
6 [報(bào)告]
發(fā)表于 2014-01-16 13:13 |只看該作者
回復(fù) 4# 這個(gè)冬天不冷
不管是黑貓還是白貓,能抓到老鼠就是好貓

   

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
7 [報(bào)告]
發(fā)表于 2014-01-16 13:46 |只看該作者
回復(fù) 2# rdcwayx
這結(jié)果貌似不太符合要求啊,不過問題不大~
  1. apple,cat12,cat106-109,cat123,cat125
  2. pear,mouse106-109,mouse123,mouse125,dog11,dog101,dog103-105
復(fù)制代碼

論壇徽章:
3
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
8 [報(bào)告]
發(fā)表于 2014-01-16 14:51 |只看該作者
perl~~
  1. my $h;
  2. map{push @{$h->{$_->[0]}->{$_->[2]}},$_->[3]}sort{$a->[2]  cmp $b->[2]||$a->[3]<=>$b->[3]}map{[/(\w+)\s+(([a-z]+)(\d+))/]}<DATA>;
  3. map{print "$_:";my $n=$_;my @arr;map{my $tmp=join ",",@{$h->{$n}->{$_}};
  4.                              1 while($tmp =~ s#(-)?(?<!\d)(\d+),(\d+)(?(?{$3!=$2+1})(*F))#$1?"-$3":"$2-$3"#e);                       
  5.                               push @arr, "$_" . join ",$_",split/,/,"$tmp";
  6.                              }keys $h->{$n};print join ",",@arr;print "\n"}keys $h;
  7. __DATA__
  8. pear    mouse107
  9. pear    mouse123
  10. pear    mouse109
  11. pear    mouse125
  12. apple   cat123
  13. pear    dog105
  14. pear    dog101
  15. apple   cat12
  16. pear    dog104
  17. apple   cat108
  18. pear    dog11
  19. apple   cat125
  20. apple   cat106
  21. pear    mouse108
  22. pear    mouse106
  23. apple   cat107
  24. pear    dog103
  25. apple   cat109
復(fù)制代碼

論壇徽章:
1
CU十四周年紀(jì)念徽章
日期:2015-12-16 18:25:16
9 [報(bào)告]
發(fā)表于 2014-01-16 15:58 |只看該作者
順序有問題,沒辦法了用asort排序后就這樣,不過添加了去重的功能[code][root@localhost ~]# cat 1.txt
pear    mouse107
pear    mouse123
pear    mouse109
pear    mouse125
apple   cat123
pear    dog105
pear    dog101
apple   cat12
pear    dog104
apple   cat108
pear    dog11
apple   cat125
apple   cat106
pear    mouse108
pear    mouse106
apple   cat107
pear    dog103
apple   cat109
[root@localhost ~]# awk '{   
  a[NR]=$1FS$2
}
END{
  asort(a)
  for (i=1;i<=NR;i++) {
    split(a[i],b,FS)
    if (!c[b[1]])
      c[b[1]]=b[2]","
    else {
      count=split(c[b[1]],d,",")
      match(d[count-1],/a-z+/)
      old1=substr(d[count-1],RSTART,RLENGTH)
      match(b[2],/a-z+/)
      new1=substr(b[2],RSTART,RLENGTH)
      match(d[count-1],/[0-9]+$/)
      old2=substr(d[count-1],RSTART,RLENGTH)
      match(b[2],/[0-9]+/)
      new2=substr(b[2],RSTART,RLENGTH)      
      if (old1==new1 && (old2+1)==new2||old2==new2) {
        c[b[1]]=substr(c[b[1]],1,length(c[b[1]])-1)
        sub(/-[0-9]+$/,"",c[b[1]])
        c[b[1]]=c[b[1]]"-"new2","
      }   
      else
        c[b[1]]=c[b[1]]""b[2]","
    }  
  }  
  for (i in c)
    print i":"substr(c[i],1,length(c[i])-1)
}' 1.txt
apple:cat106-109,cat12,cat123,cat125
pear:dog101,dog103-105,dog11,mouse106-109,mouse123,mouse125
[root@localhost ~]# [/code]

論壇徽章:
1
CU十四周年紀(jì)念徽章
日期:2015-12-16 18:25:16
10 [報(bào)告]
發(fā)表于 2014-01-16 15:59 |只看該作者
[code][root@localhost ~]# cat 1.txt
pear    mouse107
pear    mouse123
pear    mouse109
pear    mouse125
apple   cat123
pear    dog105
pear    dog101
apple   cat12
pear    dog104
apple   cat108
pear    dog11
apple   cat125
apple   cat106
pear    mouse108
pear    mouse106
apple   cat107
pear    dog103
apple   cat109
[root@localhost ~]# awk '{   
  a[NR]=$1FS$2
}
END{
  asort(a)
  for (i=1;i<=NR;i++) {
    split(a[i],b,FS)
    if (!c[b[1]])
      c[b[1]]=b[2]","
    else {
      count=split(c[b[1]],d,",")
      match(d[count-1],/a-z+/)
      old1=substr(d[count-1],RSTART,RLENGTH)
      match(b[2],/a-z+/)
      new1=substr(b[2],RSTART,RLENGTH)
      match(d[count-1],/[0-9]+$/)
      old2=substr(d[count-1],RSTART,RLENGTH)
      match(b[2],/[0-9]+/)
      new2=substr(b[2],RSTART,RLENGTH)      
      if (old1==new1 && (old2+1)==new2||old2==new2) {
        c[b[1]]=substr(c[b[1]],1,length(c[b[1]])-1)
        sub(/-[0-9]+$/,"",c[b[1]])
        c[b[1]]=c[b[1]]"-"new2","
      }   
      else
        c[b[1]]=c[b[1]]""b[2]","
    }  
  }  
  for (i in c)
    print i":"substr(c[i],1,length(c[i])-1)
}' 1.txt
apple:cat106-109,cat12,cat123,cat125
pear:dog101,dog103-105,dog11,mouse106-109,mouse123,mouse125
[root@localhost ~]# [/code]
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP