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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] awk 統(tǒng)計 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-01-05 16:47 |只看該作者 |倒序瀏覽
本帖最后由 z421941982 于 2013-01-06 21:40 編輯

現(xiàn)有文件內(nèi)容如下:
  1. a        111
  2. b        111
  3. c        111
  4. d        111
  5. b        222
  6. c        222
  7. d        222
復(fù)制代碼
文件中第一列為文本(名稱), 第二列為數(shù)值(金額), 現(xiàn)想得到以下結(jié)果:
  1. a b 1
  2. a c 1
  3. a d 1
  4. b a 1
  5. b c 2
  6. b d 2
  7. c a 1
  8. c b 2
  9. c d 2
  10. d a 1
  11. d b 2
  12. d c 2
復(fù)制代碼
統(tǒng)計規(guī)則如下:
a c 1  意思為:  第一列的名稱中 a 與 c 在第二列的金額 相等的 記錄有 1個. ( 注 根據(jù)文件中 第1行記錄和第3行記錄 得到的結(jié)果)
b c 2  意思為:  第一列的名稱中 b 與 c 在第二列的金額 相等的 記錄有 2個. ( 注 根據(jù)文件中 第2,3行記錄和第5,6行記錄 得到的結(jié)果)


論壇徽章:
0
2 [報告]
發(fā)表于 2013-01-05 17:31 |只看該作者
沒看明白是下面這個意思不?
先把文件復(fù)制一下 cp f1 f2
  1. awk 'NR==FNR{a[$1" "$2]=$0;next}
  2. {
  3.    for(i in a)
  4.       {
  5. print a[i],"   "$0
  6.        }
  7.   }' f1 f2  |
  8. awk '
  9. {
  10.   if($2==$4)
  11.     {print $1,$3,"1"}
  12.    else
  13.    {print $1,$3," 2" }
  14. }'  
  15. d  a  1
  16. c  a  1
  17. d  a  2
  18. b  a  1
  19. c  a  2
  20. a  a  1
  21. b  a  2
  22. d  b  1
  23. c  b  1
  24. d  b  2
  25. b  b  1
  26. c  b  2
  27. a  b  1
  28. b  b  2
  29. d  c  1
  30. c  c  1
  31. d  c  2
  32. b  c  1
  33. c  c  2
  34. a  c  1
  35. b  c  2
  36. d  d  1
  37. c  d  1
  38. d  d  2
  39. b  d  1
  40. c  d  2
  41. a  d  1
  42. b  d  2
  43. d  b  2
  44. c  b  2
  45. d  b  1
  46. b  b  2
  47. c  b  1
  48. a  b  2
  49. b  b  1
  50. d  c  2
  51. c  c  2
  52. d  c  1
  53. b  c  2
  54. c  c  1
  55. a  c  2
  56. b  c  1
  57. d  d  2
  58. c  d  2
  59. d  d  1
  60. b  d  2
  61. c  d  1
  62. a  d  2
  63. b  d  1
復(fù)制代碼

論壇徽章:
0
3 [報告]
發(fā)表于 2013-01-06 16:11 |只看該作者
回復(fù) 2# dahaoshanhe


你寫這個我也沒看懂, 干嘛把文件拷成兩份?

   

論壇徽章:
2
水瓶座
日期:2014-08-20 14:38:50辰龍
日期:2014-09-15 15:49:06
4 [報告]
發(fā)表于 2013-01-06 17:27 |只看該作者
呵呵  沒看懂正常

論壇徽章:
1
射手座
日期:2014-03-10 14:24:52
5 [報告]
發(fā)表于 2013-01-06 17:46 |只看該作者
感覺很難的樣子,要用二維數(shù)組和倆循環(huán)判斷才能輸出來樓主想要的。

論壇徽章:
1
射手座
日期:2014-03-10 14:24:52
6 [報告]
發(fā)表于 2013-01-06 18:44 |只看該作者
本帖最后由 davidbeckham921 于 2013-01-07 10:44 編輯
  1. awk '{a[$1]++;b[$1,a[$1]-1]=$2;a[$1]>m?m=a[$1]:m=m}0END{for(i in a) for (j in a) for(k=0;k<=m;k++)if( i!=j && b[i,k]==b[j,k] && b[i,k]!="") printf "%s\t%s\t%s\n",i,j,b[j,k]}' urfile\
  2. |awk '{a[$1" "$2]++}END{for(i in a)print i" "a[i]}'
復(fù)制代碼
寫完已經(jīng)大小便失禁,生活不能自理了,求高手簡化。

如果沒有理解錯你的意思的話結(jié)果應(yīng)該是,跟你期望的結(jié)果稍有偏差,感覺你給的答案是不對的。比如:b d 都有111和222,所以應(yīng)該是 b d 2
a b 1
a c 1
a d 1
b a 1
b c 2
b d 2
c a 1
c b 2
c d 2
d a 1
d b 2
d c 2

求高手解釋,能否把管道后的awk合并到前面?!倆END怎么搞?!

論壇徽章:
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è)計版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
7 [報告]
發(fā)表于 2013-01-06 19:47 |只看該作者
我也來寫一個吧
  1. awk '{a[$1];b[$2];c[$1""$2]}END{for(i in a){for(j in a){if(i!=j){for(k in b){if((i""k in c)&&(j""k in c))n++}print i,j,n;n=""}}}}'
復(fù)制代碼
運行結(jié)果如下:
  1. [root@localhost ~]# cat i
  2. a        111
  3. b        111
  4. c        111
  5. d        111
  6. b        222
  7. c        222
  8. d        222
  9. [root@localhost ~]# awk '{a[$1];b[$2];c[$1""$2]}END{for(i in a){for(j in a){if(i!=j){for(k in b){if((i""k in c)&&(j""k in c))n++}print i,j,n;n=""}}}}' i
  10. a b 1
  11. a c 1
  12. a d 1
  13. b a 1
  14. b c 2
  15. b d 2
  16. c a 1
  17. c b 2
  18. c d 2
  19. d a 1
  20. d b 2
  21. d c 2
  22. [root@localhost ~]#
復(fù)制代碼

論壇徽章:
0
8 [報告]
發(fā)表于 2013-01-06 21:39 |只看該作者
回復(fù) 6# davidbeckham921
  你的答案是正確的, 要的就是這個結(jié)果



   

論壇徽章:
0
9 [報告]
發(fā)表于 2013-01-06 21:47 |只看該作者
回復(fù) 7# yestreenstars


    神一樣的代碼, 看一遍都暈了, 就是要這個結(jié)果!!!

論壇徽章:
0
10 [報告]
發(fā)表于 2013-01-07 09:39 |只看該作者
回復(fù) 8# z421941982


    你的問題寫的還沒有人家給出正確答案的人寫的代碼好懂  神呀你
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP