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

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

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 4299 | 回復(fù): 9
打印 上一主題 下一主題

特定數(shù)字如何實(shí)現(xiàn)重新排序? [復(fù)制鏈接]

論壇徽章:
8
技術(shù)圖書(shū)徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-11-09 10:27 |只看該作者 |倒序?yàn)g覽
30可用積分
各位大神,想請(qǐng)教個(gè)問(wèn)題:
對(duì)于這樣的數(shù)據(jù):

  1. __DATA__
  2. a        b        s[1];p[2]        [1]d;[2]t
  3. b        c        s[1];q[2];        [1]d;[2]y;
  4. a        d        c[1,3];        [1]e;[2]t;[3]b;
  5. b        d        p[1];y[2]        [1]d;[2]y2;
  6. e       f       abb     hhh
  7. g       n       .       1
  8. f       n       6[1-4]       [1]e;[2]t;[3]b2;[4]h;
復(fù)制代碼
第 3 和 第4列的中括號(hào)'[]'內(nèi)的數(shù)字是一一對(duì)應(yīng)的,比如第一行中第三列的s[1]對(duì)應(yīng)于第四列的[1]d,我想對(duì)[]里面的數(shù)字實(shí)現(xiàn)在文本的重新排列,比如第一行是[1][2][3],第二行的編碼需要從[4]開(kāi)始,以此類(lèi)推,F(xiàn)在我想:

1、排除第 3 或者第 4 列任何一列為"."的行(第 6 行),對(duì)于其它行,如果第 3 和第 4 列沒(méi)有[\[0-9]+\]的,在第 3 列后面和第 4 列前面加上[1](第5行);如果第 3 列在一個(gè)中括號(hào)內(nèi)有兩個(gè)數(shù)字,需要拆分,如第 3 行c[1,3]=》c[1];c[2];c[3]; 第7行: 6[1-4]=》6[1];6[2];6[3];6[4];

2、對(duì)得到的數(shù)據(jù)的第 3 和第 4 列存進(jìn)數(shù)組實(shí)現(xiàn)重新排序,但保證兩列的項(xiàng)依舊一一對(duì)應(yīng),并且整體唯一。

3、同一行中重復(fù)出現(xiàn)的,采用合并序號(hào)。

  1. __DATA__
  2. s[1];p[2]        [1]d;[2]t  
  3. s[1];q[2];        [1]d;[2]y;         #s[1]和[1]d與第 1 行重復(fù),去重,q[2]、[2]y升序?yàn)閝[3]、[3]y
  4. c[1,3];        [1]e;[2]t;[3]b;       #c[1,3]; 含兩個(gè)數(shù)字,拆分為c[1](對(duì)應(yīng)[1]e);c[2](對(duì)應(yīng)[2]t);c[3](對(duì)應(yīng)[3]b);,升序?yàn)閏[4];c[5];c[6]和[4]e;[5]t;[6]b,雖然c在該處重復(fù)了3次,不過(guò)第 4 列不重復(fù),故而對(duì)c實(shí)現(xiàn)合并序號(hào),c[4];c[5];c[6] =》 c[4,6]
  5. p[1];y[2]        [1]d;[2]y2;        #p[1]和[1]d與第 1 行重復(fù),去重,y[2]、[2]y2升序?yàn)閥[7]、[7]y2
  6. abb     hhh             #abb和hhh無(wú)序號(hào),且不為“.”,在第 3 列后面和第 4 列前面加上[1],abb[1]、[1]hhh升序?yàn)閍bb[8]、[8]hhh
  7. .       1               #第 3 列為“.”排除這一行
  8. 6[1-4]       [1]e;[2]t;[3]b2;[4]h;          #拆分,升序,合并
復(fù)制代碼
最終得到兩個(gè)數(shù)組:

數(shù)組1(第3列):

  1. s[1]
  2. p[2]
  3. q[3]
  4. c[4,6]
  5. y[7]
  6. abb[8]  
  7. 6[9,12]
復(fù)制代碼
數(shù)組2(第4列):

  1. [1]d
  2. [2]t
  3. [3]y
  4. [4]e
  5. [5]t
  6. [6]b
  7. [7]y2
  8. [8]hhh
  9. [9]e
  10. [10]t
  11. [11]b2
  12. [12]h;
復(fù)制代碼
這個(gè)好難啊,希望各位大哥給點(diǎn)意見(jiàn)

最佳答案

查看完整內(nèi)容

這個(gè)問(wèn)題引起了大家的極大興趣。覺(jué)得很不錯(cuò),受益匪淺,謝謝!我的理解 ~ {:2_172:}回復(fù) 1# huang6894

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
2 [報(bào)告]
發(fā)表于 2014-11-09 10:27 |只看該作者
這個(gè)問(wèn)題引起了大家的極大興趣。
覺(jué)得很不錯(cuò),受益匪淺,謝謝!
我的理解 ~ {:2_172:}
  1. my ( $V1, @data, %dup );

  2. while (<DATA>) {
  3.     my ( undef, undef, $col3, $col4 ) = split;
  4.     next if grep { /^\.$/ } $col3, $col4;
  5.     my @elem = split /;/, $col3;
  6.     my @exists;
  7.     for my $e (@elem) {
  8.         my ( $K, $v, $v2 ) = split /[\[\],-]/, $e;
  9.         if ( $dup{$K}++ ) {
  10.             push @exists, (0) x ( $v2 ? $v2 - $v + 1 : 1 );
  11.             next;
  12.         }
  13.         $V1 ||= ( $v || 1 );
  14.         if ($v2) {
  15.             my $V2 = $V1 + $v2 - $v;
  16.             push @exists, map { $V1 + $_ } 0 .. $v2 - $v;
  17.             push @{ $data[0] }, "${K}[$V1,$V2]";
  18.             $V1 = $V2 + 1;
  19.         }
  20.         else {
  21.             push @{ $data[0] }, "${K}[$V1]";
  22.             push @exists, $V1++;
  23.         }

  24.     }

  25.     @elem = split /;/, $col4;
  26.     for my $i ( 0 .. $#exists ) {
  27.         next unless $exists[$i];
  28.         my ($k) = $elem[$i] =~ /(\w+)$/;
  29.         push @{ $data[1] }, "[$exists[$i]]$k";
  30.     }

  31. }

  32. print "@$_\n" for @data;

  33. __DATA__
  34. a       b        s[1];p[2]        [1]d;[2]t
  35. b       c        s[1];q[2];       [1]d;[2]y;
  36. a       d        c[1,3];          [1]e;[2]t;[3]b;
  37. b       d        p[1];y[2]        [1]d;[2]y2;
  38. e       f        abb              hhh
  39. g       n        .                1
  40. f       n        6[1-4]           [1]e;[2]t;[3]b2;[4]h;
  41. a       d        c[1,3];A[4];     [1]e;[2]t;[3]b;[4]d;   # ADD
復(fù)制代碼
回復(fù) 1# huang6894


   

論壇徽章:
23
15-16賽季CBA聯(lián)賽之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午馬
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16賽季CBA聯(lián)賽之山東
日期:2017-12-21 16:39:1915-16賽季CBA聯(lián)賽之廣東
日期:2016-01-19 13:33:372015亞冠之山東魯能
日期:2015-10-13 09:39:062015亞冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [報(bào)告]
發(fā)表于 2014-11-10 13:08 |只看該作者
本帖最后由 ly5066113 于 2014-11-10 13:09 編輯

回復(fù) 1# huang6894


數(shù)組1:
  1. awk '$3=="."||$4=="."{next}{for(i=1;i<=split($3,a,/[][;]+/);i+=2){if(a[i]&&!b[a[i]]++){if(split(a[i+1],c,/[-,]/)>1){printf "%s[%d,%d]\n",a[i],++n,n+c[2]-c[1];n+=c[2]-c[1]}else printf "%s[%d]\n",a[i],++n}}}' file
復(fù)制代碼
2的自己改改吧。

論壇徽章:
8
技術(shù)圖書(shū)徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
4 [報(bào)告]
發(fā)表于 2014-11-10 13:56 |只看該作者
回復(fù) 2# ly5066113


    謝謝。。受益匪淺~

論壇徽章:
8
技術(shù)圖書(shū)徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
5 [報(bào)告]
發(fā)表于 2014-11-10 13:58 |只看該作者
回復(fù) 2# pitonas


    我大概能理解大神的意思。。。有一個(gè)問(wèn)題是:假如數(shù)據(jù)是
  1. a       d        c[1,3];aaaa          [1]e;[2]t;[3]b;
復(fù)制代碼
這樣的時(shí)候,拆分為c[1](對(duì)應(yīng)[1]e);c[2](對(duì)應(yīng)[2]t);c[3](對(duì)應(yīng)[3]b);aaaa是額外的不需要添加相關(guān)數(shù)字

論壇徽章:
8
技術(shù)圖書(shū)徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
6 [報(bào)告]
發(fā)表于 2014-11-10 14:02 |只看該作者
回復(fù) 2# pitonas


    實(shí)在對(duì)不起。。其實(shí)我是想得到:s[1];p[2];q[3];c[4,6];aaaa"樓主注:這是額外的";y[8];abb[9];6[10,13];A[14];和一個(gè)數(shù)組“[1]d [2]t [3]y [4]e [5]t [6]b [7] [8]y2 [9]hhh [10]e [11]t [12]b2 [13]h [14]d”
walklan 該用戶(hù)已被刪除
7 [報(bào)告]
發(fā)表于 2014-11-10 14:02 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
8
技術(shù)圖書(shū)徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
8 [報(bào)告]
發(fā)表于 2014-11-10 14:03 |只看該作者
回復(fù) 7# walklan


    各位大神好厲害

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
9 [報(bào)告]
發(fā)表于 2014-11-10 15:48 |只看該作者
從這個(gè)角度上來(lái)說(shuō): 我還是持觀望態(tài)度 ~ {:2_168:}

這?
  1.     my $elem4 = ( $col4 =~ tr/;// ) + ( $col4 !~ /;$/ );
  2.     for my $e (@elem) {
  3.         last if @exists >= $elem4;
復(fù)制代碼
回復(fù) 5# huang6894


   

論壇徽章:
8
技術(shù)圖書(shū)徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
10 [報(bào)告]
發(fā)表于 2014-11-10 15:50 |只看該作者
回復(fù) 9# pitonas


    {:2_180:} {:2_180:} O(∩_∩)O好的
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP