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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] 文本處理-先分組后排序 [復制鏈接]

論壇徽章:
1
水瓶座
日期:2015-01-24 08:46:39
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-06-18 22:30 |只看該作者 |倒序瀏覽
題目要求:
1.以aa-cd-dd-xx 中最后一列xx分組,并對每組中的IP:2.2.3.XXX 對最后一組XXX再進行排序。
2.簡述,先分組然后排序
ab-cd-rc-ab 3.2.3.46
ab-cd-cc-ee 1.2.3.41
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.42
fd-fe-er-fe 2.3.4.51
aa-er-vd-cd 3.4.5.61
zz-sd-jk-ee 5.6.7.82
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.21
ee-ad-df-fc 4.5.6.9
ad-ee-cd-er 5.4.3.23
bc-ki-ee-ee 0.3.4.5
bc-ki-ee-db 0.3.4.125
bc-ki-ee-db 0.3.4.12
bc-ki-de-fg 0.3.4.225
bc-ki-de-fg 0.3.4.25
要求的結果:
ab-cd-cc-aa 1.2.3.43
ab-cd-cc-aa 1.2.3.49
ab-cd-rc-ab 3.2.3.46
aa-er-vd-cd 3.4.5.61
bc-ki-ee-db 0.3.4.12
bc-ki-ee-db 0.3.4.125
bc-ki-ee-ee 0.3.4.5
ab-cd-cc-ee 1.2.3.41
zz-sd-jk-ee 5.6.7.82
ad-ee-cd-er 5.4.3.23
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.9
ee-ad-df-fc 4.5.6.21
fd-fe-er-fe 2.3.4.51
bc-ki-de-fg 0.3.4.25
bc-ki-de-fg 0.3.4.225

想用awk解決,可是沒有思路,希望大家有空幫我看看。謝謝。

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
2 [報告]
發(fā)表于 2015-06-18 23:20 |只看該作者
回復 1# gameb_y

gawk 4.0+
  1. awk '{match($0,/^.+-([^ ]+).*\.([^.]+)$/,a);b[a[1]][a[2]]=$0}END{for(i=1;i<=asorti(b,e);i++){for(j in b[e[i]])c[++n]=j;for(m=asort(c);m>0;m--)print b[e[i]][c[m]];n=0;delete c}}'

復制代碼

論壇徽章:
1
水瓶座
日期:2015-01-24 08:46:39
3 [報告]
發(fā)表于 2015-06-18 23:30 |只看該作者
回復 2# yinyuemi


    謝謝指點。

論壇徽章:
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程序設計版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
4 [報告]
發(fā)表于 2015-06-18 23:40 |只看該作者
awk 4.0+
  1. awk '{split($2,a,".");b[$1][a[4]]=$0;c[$1][a[4]]=a[4]}END{for(i=0;i++<asorti(b,d);){for(j=0;j++<asort(c[d[i]],e);)print b[d[i]][e[j]]}}'
復制代碼

論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [報告]
發(fā)表于 2015-06-19 00:04 |只看該作者
回復 1# gameb_y

$ awk '{t1=split($1,a1,"-");t2=split($2,a2,".");k=sprintf("%5s%03d",a1[t1],a2[t2]);a[k]=(a[k]?a[k]"\n"$0:$0)}END{t=asorti(a,b);for(n=1;n<=t;n++)print a[b[n]]}' FILE
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.42
ab-cd-rc-ab 3.2.3.46
aa-er-vd-cd 3.4.5.61
bc-ki-ee-db 0.3.4.12
bc-ki-ee-db 0.3.4.125
bc-ki-ee-ee 0.3.4.5
ab-cd-cc-ee 1.2.3.41
zz-sd-jk-ee 5.6.7.82
ad-ee-cd-er 5.4.3.23
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.9
ee-ad-df-fc 4.5.6.21
fd-fe-er-fe 2.3.4.51
bc-ki-de-fg 0.3.4.25
bc-ki-de-fg 0.3.4.225

論壇徽章:
54
2015亞冠之德黑蘭石油
日期:2015-07-07 13:00:1615-16賽季CBA聯(lián)賽之深圳
日期:2016-03-31 09:03:5415-16賽季CBA聯(lián)賽之遼寧
日期:2016-05-09 20:38:15程序設計版塊每日發(fā)帖之星
日期:2016-05-12 06:20:0015-16賽季CBA聯(lián)賽之四川
日期:2016-05-13 15:19:4715-16賽季CBA聯(lián)賽之福建
日期:2016-05-15 20:24:34每日論壇發(fā)貼之星
日期:2016-05-16 06:20:0015-16賽季CBA聯(lián)賽之吉林
日期:2016-05-26 11:49:4715-16賽季CBA聯(lián)賽之廣東
日期:2016-05-26 13:49:18極客徽章
日期:2016-12-07 14:05:2315-16賽季CBA聯(lián)賽之廣夏
日期:2016-12-20 17:33:532017金雞報曉
日期:2017-01-10 15:19:56
6 [報告]
發(fā)表于 2015-06-19 09:45 |只看該作者
  1. # sort -t "." -k1.10,1.11 -k4n e
  2. ab-cd-cc-aa 1.2.3.42
  3. ab-cd-cc-aa 1.2.3.49
  4. ab-cd-rc-ab 3.2.3.46
  5. aa-er-vd-cd 3.4.5.61
  6. bc-ki-ee-db 0.3.4.12
  7. bc-ki-ee-db 0.3.4.125
  8. bc-ki-ee-ee 0.3.4.5
  9. ab-cd-cc-ee 1.2.3.41
  10. zz-sd-jk-ee 5.6.7.82
  11. ad-ee-cd-er 5.4.3.23
  12. ee-ad-df-fc 4.5.6.7
  13. ee-ad-df-fc 4.5.6.9
  14. ee-ad-df-fc 4.5.6.21
  15. fd-fe-er-fe 2.3.4.51
  16. bc-ki-de-fg 0.3.4.25
  17. bc-ki-de-fg 0.3.4.225
復制代碼

論壇徽章:
30
申猴
日期:2014-04-10 09:43:532015年亞洲杯紀念徽章
日期:2015-03-20 14:40:232015亞冠之阿爾納斯爾
日期:2015-06-02 18:59:042015亞冠之阿爾希拉爾
日期:2015-06-30 15:22:572015亞冠之大阪鋼巴
日期:2015-07-20 10:44:332015亞冠之阿爾納斯爾
日期:2015-10-28 14:57:5215-16賽季CBA聯(lián)賽之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16賽季CBA聯(lián)賽之山西
日期:2016-07-25 21:54:2715-16賽季CBA聯(lián)賽之北京
日期:2016-10-27 12:07:2315-16賽季CBA聯(lián)賽之八一
日期:2017-07-07 16:39:0915-16賽季CBA聯(lián)賽之吉林
日期:2017-09-04 12:14:43
7 [報告]
發(fā)表于 2015-06-19 11:40 |只看該作者
  1. perl -e 'print map {$_->[0]} sort {$a->[1] cmp $b->[1] || $a->[2] <=> $b->[2]} map {/(..) .*\.(.+)/;[$_,$1,$2]} <>;' file2
  2. ab-cd-cc-aa 1.2.3.42
  3. ab-cd-cc-aa 1.2.3.42
  4. ab-cd-rc-ab 3.2.3.46
  5. aa-er-vd-cd 3.4.5.61
  6. bc-ki-ee-db 0.3.4.12
  7. bc-ki-ee-db 0.3.4.125
  8. bc-ki-ee-ee 0.3.4.5
  9. ab-cd-cc-ee 1.2.3.41
  10. zz-sd-jk-ee 5.6.7.82
  11. ad-ee-cd-er 5.4.3.23
  12. ee-ad-df-fc 4.5.6.7
  13. ee-ad-df-fc 4.5.6.9
  14. ee-ad-df-fc 4.5.6.21
  15. fd-fe-er-fe 2.3.4.51
  16. bc-ki-de-fg 0.3.4.25
  17. bc-ki-de-fg 0.3.4.225
復制代碼
回復 1# gameb_y


   

論壇徽章:
1
水瓶座
日期:2015-01-24 08:46:39
8 [報告]
發(fā)表于 2015-06-19 23:24 |只看該作者
[ 本帖最后由 gameb_y 于 2015-06-24 23:20 編輯 ]

謝謝大家的幫助。我總結了如下兩種方法。
簡單易用的
[root@C66-test ~]# sort -t "." -k 1.10,1.11 -k 4,4n 20k.txt
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.42
ab-cd-rc-ab 3.2.3.46
aa-er-vd-cd 3.4.5.61
bc-ki-ee-db 0.3.4.12
bc-ki-ee-db 0.3.4.125
bc-ki-ee-ee 0.3.4.5
ab-cd-cc-ee 1.2.3.41
zz-sd-jk-ee 5.6.7.82
ad-ee-cd-er 5.4.3.23
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.9
ee-ad-df-fc 4.5.6.21
fd-fe-er-fe 2.3.4.51
bc-ki-de-fg 0.3.4.25
bc-ki-de-fg 0.3.4.225

##此處是一個小技巧:
1.-k 4,4 與 -k 4 區(qū)別就是
-k 4,4 是第四個字段的開始到結尾
-k 4 是第四個字段的開始到行尾
這里結果是相同的
2.-k 4,4n
對本字段,使用 -n 排序,就可以寫成這樣。
擴展 -k 4nr 就是逆序了。

難懂的 awk方法
[root@C66-test ~]# cat 20k.awk
#!/bin/awk
###groups and then sort the ip
###modified by wxr 20150619
{
t1=split($1,a1,"-");
t2=split($2,a2,".");
k=sprintf("%5s%03d",a1[t1],a2[t2]);
a[k]=(a[k]?a[k]"\n"$0:$0)
}

END{
t=asorti(a,b);
for(n=1;n<=t;n++)
print a[b[n]]
}
[root@C66-test ~]# awk -f 20k.awk 20k.txt
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.42
ab-cd-rc-ab 3.2.3.46
aa-er-vd-cd 3.4.5.61
bc-ki-ee-db 0.3.4.12
bc-ki-ee-db 0.3.4.125
bc-ki-ee-ee 0.3.4.5
ab-cd-cc-ee 1.2.3.41
zz-sd-jk-ee 5.6.7.82
ad-ee-cd-er 5.4.3.23
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.9
ee-ad-df-fc 4.5.6.21
fd-fe-er-fe 2.3.4.51
bc-ki-de-fg 0.3.4.25
bc-ki-de-fg 0.3.4.225
###腳本解釋
#!/bin/awk
###groups and then sort the ip
###modified by wxr 20150619
{
t1=split($1,a1,"-")     
t2=split($2,a2,".")

k=sprintf("%5s%03d",a1[t1],a2[t2])
#sprintf不會輸出到屏幕,會輸出到變量k中,格式就是 sprintf 里面規(guī)定的,%5s%03d
a1[t1],a2[t2] a1[4],a2[4]

a[k]=(a[k]?a[k]"\n"$0:$0)
##這是一個 ? : 條件運算符
if (a[k]) ;then
a[k]= a[k]"\n"$0;
else
a[k]=$0
fi
}

##處理完
END{
t=asorti(a,b);
#對數(shù)組a的下標進行排序,并把排序結果存放到b中,且b的數(shù)組名從1開始。
#asorti返回值是數(shù)組中元素的個數(shù)
for(n=1;n<=t;n++)
print a[b[n]]
###數(shù)組嵌套了。
}

##注釋完了,還是不懂。放著吧。

最后謝謝大家的幫助,新手不懂如何@。

論壇徽章:
1
水瓶座
日期:2015-01-24 08:46:39
9
發(fā)表于 2015-06-19 23:25
回復 4# yestreenstars


    謝謝

論壇徽章:
1
水瓶座
日期:2015-01-24 08:46:39
10
發(fā)表于 2015-06-19 23:26
回復 5# jason680


    謝謝。
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP