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

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

Chinaunix

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

[文本處理] 數(shù)據(jù)展開 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-02-08 19:15 |只看該作者 |倒序?yàn)g覽
各位大大好:

1: 一個(gè)文本, 每行是由字符 A, B, C, D 字符組成的。如:

A[BC]D[ABC]DA[BC]D
[BCA][ADB]DAA[BC]

2: [AB], [ABCD]..是一組. 在每一組之內(nèi), 字符沒(méi)有重復(fù), 如:

[AAB]   # A 重復(fù)
[ABC]   # 沒(méi)有重復(fù)

3: 數(shù)據(jù)依序擴(kuò)展

一行比如:  A[BC]D

數(shù)據(jù)依序擴(kuò)展為:

ABD
ACD

一行比如: A[BC]D[AC]
數(shù)據(jù)依序擴(kuò)展為:

ABDA
ABDC
ACDA
ACDC

4: 行1 輸出 file.1, 行2 輸出 file.2....

5: 每文本按照 limit 值 輸出, (輸出行數(shù) <= limit):

一行比如: A[BC]D[AC]

比如: limit = 3, 輸出行數(shù) = 3

ABDA
ABDC
ACDA

一行比如: A[BC]
比如: limit = 5, 輸出:

AB
AC

測(cè)試文件如下:( 假設(shè) limit = 10 )

A[BC]D[ABC]DA[BC]D
[BCA][ADB]DAA[BC]
A[BC]D[AC]


結(jié)果:

file.1:
ABDADABD
ABDADACD
ABDBDABD
ABDBDACD
ABDCDABD
ABDCDACD
ACDADABD
ACDADACD
ACDBDABD
ACDBDACD

file.2:
BADAAB
BADAAC
BDDAAB
BDDAAC
BBDAAB
BBDAAC
CADAAB
CADAAC
CDDAAB
CDDAAC

file.3:
ABDA
ABDC
ACDA
ACDC



# 實(shí)際的一行數(shù)據(jù)可能看起來(lái)像這樣
A[BC]D[AC]DAABACDA[AC]DDACA[BC]D[AC]DAAA[BC]DDDACB[AC]DAABCCD[AC]DCCA[BC]D[AC]DCA[BC]DACDA[BC]D[ABC]DA[BC]D[AC]DABCD[ACB]DA[BC]DACCDABCD[DC]DA[BCA]DDABCCBB

各位大大能不能給我這個(gè)數(shù)據(jù)擴(kuò)展的腳本 ?

論壇徽章:
39
辰龍
日期:2013-08-21 15:45:192015亞冠之廣州富力
日期:2015-05-12 16:34:52亥豬
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17雙魚座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亞冠之卡爾希納薩夫
日期:2015-05-24 15:24:35黃金圣斗士
日期:2015-12-02 17:25:0815-16賽季CBA聯(lián)賽之吉林
日期:2017-06-24 16:43:52
2 [報(bào)告]
發(fā)表于 2014-02-08 20:04 |只看該作者
本帖最后由 關(guān)陰月飛 于 2014-02-08 20:05 編輯

回復(fù) 1# gr33n


大概思路:
把 [ABC] 替換成 {A,B,C} 之后用echo就能打出所有組合
  1. awk -vl=10 -F '' '{for(i=0;i++<NF;){if($i=="["){s=1;continue}if($i=="]"){s=0}if(s)$i=$i","};gsub(/\[/,"{");gsub(/,]/,"}");"echo "$0 |getline a;split(a,b," ");for(n=0;n++<l;)print b[n] >"file."NR}' OFS=''  urfile
復(fù)制代碼

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2014-02-08 22:38 |只看該作者
回復(fù) 2# 關(guān)陰月飛


(⊙0⊙)~  啊!! 好厲害!謝謝大大!
結(jié)果出來(lái)是正確的!

大大, 可不可以再優(yōu)化?

論壇徽章:
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
4 [報(bào)告]
發(fā)表于 2014-02-09 13:56 |只看該作者
  1. 腳本:
  2. #!/bin/awk -f
  3. BEGIN{FS="[][]";limit=10}
  4. {
  5.         for(i=0;i++<NF;){
  6.                 if(i%2)t=$i
  7.                 else{
  8.                         if(i>2){
  9.                                 for(j=0;j++<length(b[i-2]);){
  10.                                         for(k=0;k++<split($i,a,"");){
  11.                                                 b[i][++n]=b[i-2][j]""t""a[k]
  12.                                                 if(i==NF-1)b[i][n]=b[i][n]$(i+1)
  13.                                         }
  14.                                         if(n>=limit)break
  15.                                 }
  16.                                 n=0
  17.                         }else for(j=0;j++<split($i,a,"");)b[2][j]=t""a[j]
  18.                 }
  19.         }
  20.         for(i=1;i<=limit&&i<=length(b[NF-1]);i++)print b[NF-1][i] > "file."NR
  21.         delete b
  22. }
  23. 效率測(cè)試:
  24. $ cat i
  25. A[BC]D[AC]DAABACDA[AC]DDACA[BC]D[AC]DAAA[BC]DDDACB[AC]DAABCCD[AC]DCCA[BC]D[AC]DCA[BC]DACDA[BC]D[ABC]DA[BC]D[AC]DABCD[ACB]DA[BC]DACCDABCD[DC]DA[BCA]DDABCCBB

  26. $ time ./a i

  27. real    0m0.144s
  28. user    0m0.015s
  29. sys     0m0.015s

  30. $ cat file.1
  31. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADABDACCDABCDDDABDDABCCBB
  32. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADABDACCDABCDDDACDDABCCBB
  33. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADABDACCDABCDDDAADDABCCBB
  34. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADABDACCDABCDCDABDDABCCBB
  35. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADABDACCDABCDCDACDDABCCBB
  36. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADABDACCDABCDCDAADDABCCBB
  37. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADACDACCDABCDDDABDDABCCBB
  38. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADACDACCDABCDDDACDDABCCBB
  39. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADACDACCDABCDDDAADDABCCBB
  40. ABDADAABACDAADDACABDADAAABDDDACBADAABCCDADCCABDADCABDACDABDADABDADABCDADACDACCDABCDCDABDDABCCBB
復(fù)制代碼
注:請(qǐng)使用4.0以上的awk運(yùn)行~

論壇徽章:
29
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-02-29 06:20:0015-16賽季CBA聯(lián)賽之天津
日期:2016-08-10 10:33:1115-16賽季CBA聯(lián)賽之深圳
日期:2016-08-17 15:07:2015-16賽季CBA聯(lián)賽之佛山
日期:2016-11-07 11:33:5015-16賽季CBA聯(lián)賽之廣夏
日期:2016-11-15 09:13:31CU十四周年紀(jì)念徽章
日期:2016-11-24 14:12:25極客徽章
日期:2016-12-07 14:03:4015-16賽季CBA聯(lián)賽之深圳
日期:2016-12-07 17:15:2715-16賽季CBA聯(lián)賽之北京
日期:2016-12-22 09:30:0115-16賽季CBA聯(lián)賽之深圳
日期:2016-12-22 10:49:2115-16賽季CBA聯(lián)賽之山西
日期:2017-02-10 09:05:3215-16賽季CBA聯(lián)賽之同曦
日期:2017-02-27 14:19:08
5 [報(bào)告]
發(fā)表于 2014-02-09 14:50 |只看該作者
  1. [redhat@localhost ~]$ cat urfile
  2. A[BC]D[ABC]DA[BC]D
  3. [BCA][ADB]DAA[BC]
  4. A[BC]D[AC]
  5. [redhat@localhost ~]$ ls -l file*
  6. ls: file*: No such file or directory
  7. [redhat@localhost ~]$ awk -vl=10 -F '' '{for(i=0;i++<NF;){if($i=="["){s=1;continue}if($i=="]"){s=0}if(s)$i=$i","};gsub(/\[/,"{");gsub(/,]/,"}");"echo "$0 |getline a;split(a,b," ");for(n=0;n++<l;)print b[n] >"file."NR}' OFS=''  urfile
  8. sh: ABDADABD: command not found
  9. sh: BADAAB: command not found
  10. sh: ABDA: command not found
  11. [redhat@localhost ~]$ ls -l file*
  12. -rw-rw-r-- 1 redhat redhat 10 Feb  9 14:46 file.1
  13. -rw-rw-r-- 1 redhat redhat 10 Feb  9 14:46 file.2
  14. -rw-rw-r-- 1 redhat redhat 10 Feb  9 14:46 file.3
  15. [redhat@localhost ~]$ cat file.1







  16. [redhat@localhost ~]$

  17. 為什么報(bào)
  18. sh: ABDADABD: command not found
  19. sh: BADAAB: command not found
  20. sh: ABDA: command not found
  21. 而且file.*里都是空行

  22. "echo "$0 | getline a; 這里報(bào)錯(cuò)
復(fù)制代碼

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2014-02-09 16:55 |只看該作者
回復(fù) 4# yestreenstars


    (⊙0⊙)~  啊!! 好厲害!跑得更快了, 非?斓。

謝謝大大!
您需要登錄后才可以回帖 登錄 | 注冊(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)專區(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