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

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

Chinaunix

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

求助,請各位高手支招,謝謝! [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-11-29 23:50 |只看該作者 |倒序?yàn)g覽
本帖最后由 net_lin 于 2010-11-29 23:51 編輯

想對一個(gè)若干文本進(jìn)行處理和格式化輸出,用shell處理起來很麻煩,效率也不高,想請教一下perl怎么處理
文本類似以下格式:

段落1
id       字段1   字段2   字段3 ...
0x3138   256     456     115
0x3139   0       32      654
0x3145   156     56      185
0x3137   0       32      1654

段落2
id       字段18   字段19   字段20 ...
0x3138   256      456      115
0x3139   0        32       654
0x3145   156      56       185
0x3137   0        32       1654

段落3
id1    id2    字段1   字段2   字段3 ...
0x0054 1      fasf    412     8098
0x0054 2      asf     1412    1098
0x0014 1      fdassf  12      109

段落4
id1    id2    字段16   字段17   字段18 ...
0x0054 1      kmsdf    42       98
0x0054 2      fadff    2        0

共有4個(gè)段落,段落間空行分隔,每個(gè)段落頭有段落頭名稱,每個(gè)段落頭的下一行為字段名稱,字段個(gè)數(shù)不確定,字段間以多個(gè)空格分隔,段落1和段落2通過第一個(gè)字段(id)可進(jìn)行關(guān)聯(lián),段落3和段落4通過第一個(gè)字段(id1)和第二個(gè)字段(id2)可關(guān)聯(lián),要求將第1個(gè)段落和第2個(gè)段落關(guān)聯(lián)后將所有字段放在同一行內(nèi)輸出(字段分隔符為逗號(hào)),即輸出為:
id,字段1,字段2,字段3 ... 字段18,字段19,字段20 ...
第3個(gè)段落和第4個(gè)段落也實(shí)現(xiàn)同樣的功能,(注:段落間的關(guān)聯(lián)可能存在找不到對應(yīng)的關(guān)聯(lián)行,找不到的關(guān)聯(lián)由默認(rèn)值0替代)

額外的要求為將輸出對指定的某幾個(gè)字段進(jìn)行排序(升序或降序),各自取出按這幾個(gè)字段排序后的前10行(去重后輸出),需要考慮一定的效率,如1M大小的文件處理不超過2秒,請各位高手支招,謝謝!

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
2 [報(bào)告]
發(fā)表于 2010-11-30 00:25 |只看該作者
建個(gè) hash, key 為 id 值為(字段 => 值)的 hashref。

{
    id => {
        字段1 => 值1,
        字段2  => 值2,
        ...
    },
    ...
}

你用數(shù)據(jù)庫更簡單

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-11-30 10:30 |只看該作者
只寫了部分符合條件的語句,你看著改改吧

# cat data2.txt
section1
id       col1   col2     col3
0x3138   256     456     115
0x3139   0       32      654
0x3145   156     56      185
0x3137   0       32      1654

section2
id       col18   col19     col20
0x3138   256      456      115
0x3139   0        32       654
0x3145   156      56       185
0x3137   0        32       1654


# perl -00  -ne '/section/  and print' data2.txt| perl -aF'\s+' -ne '/section/ or $rec{$F[0]} .= " " . join(" ",@F[1..3]); END{foreach (reverse sort keys %rec){print "$_  $rec{$_}\n"}}'

id   col1 col2 col3 col18 col19 col20
0x3145   156 56 185 156 56 185
0x3139   0 32 654 0 32 654
0x3138   256 456 115 256 456 115
0x3137   0 32 1654 0 32 1654

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
4 [報(bào)告]
發(fā)表于 2010-11-30 10:57 |只看該作者
需求說的挺清楚的。
可既然知道這事兒 Perl 能干,為什么不學(xué)學(xué) Perl 呢?這可是一個(gè)不錯(cuò)的契機(jī)呢。
你這樣子下去永遠(yuǎn)都不會(huì) Perl,遇到類似的問題永遠(yuǎn)都得問人。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(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ū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP