亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
求助,請(qǐng)各位高手支招,謝謝!
[打印本頁(yè)]
作者:
net_lin
時(shí)間:
2010-11-29 23:50
標(biāo)題:
求助,請(qǐng)各位高手支招,謝謝!
本帖最后由 net_lin 于 2010-11-29 23:51 編輯
想對(duì)一個(gè)若干文本進(jìn)行處理和格式化輸出,用shell處理起來(lái)很麻煩,效率也不高,想請(qǐng)教一下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通過(guò)第一個(gè)字段(id)可進(jìn)行關(guān)聯(lián),段落3和段落4通過(guò)第一個(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)可能存在找不到對(duì)應(yīng)的關(guān)聯(lián)行,找不到的關(guān)聯(lián)由默認(rèn)值0替代)
額外的要求為將輸出對(duì)指定的某幾個(gè)字段進(jìn)行排序(升序或降序),各自取出按這幾個(gè)字段排序后的前10行(去重后輸出),需要考慮一定的效率,如1M大小的文件處理不超過(guò)2秒,請(qǐng)各位高手支招,謝謝!
作者:
zhlong8
時(shí)間:
2010-11-30 00:25
建個(gè) hash, key 為 id 值為(字段 => 值)的 hashref。
{
id => {
字段1 => 值1,
字段2 => 值2,
...
},
...
}
你用數(shù)據(jù)庫(kù)更簡(jiǎn)單
作者:
小鷺
時(shí)間:
2010-11-30 10:30
只寫了部分符合條件的語(yǔ)句,你看著改改吧
# 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
作者:
flw
時(shí)間:
2010-11-30 10:57
需求說(shuō)的挺清楚的。
可既然知道這事兒 Perl 能干,為什么不學(xué)學(xué) Perl 呢?這可是一個(gè)不錯(cuò)的契機(jī)呢。
你這樣子下去永遠(yuǎn)都不會(huì) Perl,遇到類似的問(wèn)題永遠(yuǎn)都得問(wèn)人。
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2