免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 32264 | 回复: 81

[文本处理] 码农的欧洲杯:欢迎各路神仙和高手挑战! [复制链接]

论坛徽章:
0
发表于 2012-06-01 03:56 |显示全部楼层
下面是欧洲杯的大名单,每个队23个人一共16个队
求:
1.年纪最小的人
2.年纪最大的人
3.哪一天出生的人最多
4.和你生日相同的人,如果有的话找出来
5.给定一个球员名,列出国籍与教练,处在哪个小组
6.哪个俱乐部的人最多
7.队长里打什么位置的最多
8.比你年纪大的有多少人
9.列出365天里所有人都不过生日的日期
10.打各个位置的人一共有多少


说明:
1.由于长度限制,只贴了2个小组的队伍,附件里全的
2.友情提示不是所有的人名都是两段哦,看看荷兰吧
3.大家有什么可以设计的问题,有难度的可以提出来
4.祝大家看球快乐


最佳球迷奖:3名,CU精心准备的欧洲杯礼物一份(绞尽脑汁中.....)
好运奖:7名,CU积分2000分(ChinaUnix博彩专区欢迎您!在这里你可以以小博大,积分翻番!
  1. Group A

  2. Poland

  3. Head coach:  Franciszek Smuda (Poland)

  4.   # Pos. Player                   Date of Birth (Age)     Club
  5.   1  GK  Wojciech Szczesny        (1990-04-18)  (aged 22) Arsenal
  6.   2  DF  Sebastian Boenisch       (1987-02-01)  (aged 25) Werder Bremen
  7.   3  DF  Grzegorz Wojtkowiak      (1984-01-26)  (aged 28) Lech Poznan
  8.   4  DF  Damien Perquis           (1984-10-04)  (aged 27) Sochaux
  9.   5  MF  Dariusz Dudka            (1983-12-09)  (aged 28) Auxerre
  10.   6  MF  Adam Matuszczyk          (1989-02-14)  (aged 23) Fortuna Dusseldorf
  11.   7  MF  Eugen Polanski           (1986-03-17)  (aged 26) Mainz 05
  12.   8  MF  Maciej Rybus             (1989-08-19)  (aged 22) Terek Grozny
  13.   9  FW  Robert Lewandowski       (1988-08-21)  (aged 23) Borussia Dortmund
  14. 10  MF  Ludovic Obraniak         (1984-11-10)  (aged 27) Bordeaux
  15. 11  MF  Rafal Murawski           (1981-10-09)  (aged 30) Lech Poznan
  16. 12  GK  Grzegorz Sandomierski    (1989-09-05)  (aged 22) Jagiellonia Biallystok
  17. 13  DF  Marcin Wasilewski        (1980-06-09)  (aged 31) Anderlecht
  18. 14  DF  Jakub Wawrzyniak         (1983-07-07)  (aged 28) Legia Warsaw
  19. 15  DF  Marcin Kamimski          (1992-01-15)  (aged 20) Lech Poznan
  20. 16  MF  Jakub Blaszczykowski (c) (1985-12-14)  (aged 26) Borussia Dortmund
  21. 17  MF  Rafal Wolski             (1992-11-10)  (aged 19) Legia Warsaw
  22. 18  MF  Adrian Mierzejewski      (1986-11-04)  (aged 25) Trabzonspor
  23. 19  FW  Artur Sobiech            (1990-06-12)  (aged 21) Hannover 96
  24. 20  DF  Lukasz Piszczek          (1985-06-03)  (aged 27) Borussia Dortmund
  25. 21  MF  Kamil Grosicki           (1988-06-08)  (aged 24) Sivasspor
  26. 22  GK  Przemyslaw Tytom         (1987-01-04)  (aged 25) PSV Eindhoven
  27. 23  FW  Pawel Brozek             (1983-04-21)  (aged 29) Celtic

  28. Greece

  29. Head coach:  Fernando Santos (Portugal)

  30.   # Pos. Player                    Date of Birth (Age)     Club
  31.   1  GK  Kostas Chalkias           (1974-05-30)  (aged 38) P.A.O.K.
  32.   2  DF  Ioannis Maniatis          (1986-10-12)  (aged 25) Olympiacos
  33.   3  DF  Giorgos Tzavelas          (1987-11-26)  (aged 24) Monaco
  34.   4  DF  Stelios Malezas           (1985-03-11)  (aged 27) P.A.O.K.
  35.   5  DF  Kyriakos Papadopoulos     (1992-02-23)  (aged 20) Schalke 04
  36.   6  MF  Grigoris Makos            (1987-01-18)  (aged 25) AEK Athens
  37.   7  FW  Giorgos Samaras           (1985-02-21)  (aged 27) Celtic
  38.   8  DF  Avraam Papadopoulos       (1984-12-03)  (aged 27) Olympiacos
  39.   9  FW  Nikos Lyberopoulos        (1975-08-04)  (aged 36) AEK Athens
  40. 10  MF  Giorgos Karagounis (c)    (1977-03-06)  (aged 35) Panathinaikos
  41. 11  FW  Kostas Mitroglou          (1988-03-12)  (aged 24) Atromitos
  42. 12  GK  Alexandros Tzorvas        (1982-08-12)  (aged 29) Palermo
  43. 13  GK  Michalis Sifakis          (1984-09-09)  (aged 27) Aris Thessaloniki
  44. 14  FW  Dimitris Salpigidis       (1981-08-18)  (aged 30) P.A.O.K
  45. 15  DF  Vasilis Torosidis         (1985-06-10)  (aged 26) Olympiacos
  46. 16  MF  Giorgos Fotakis           (1981-10-29)  (aged 30) P.A.O.K
  47. 17  FW  Theofanis Gekas           (1980-05-23)  (aged 32) Samsunspor
  48. 18  MF  Sotiris Ninis             (1990-04-03)  (aged 22) Panathinaikos
  49. 19  DF  Sokratis Papastathopoulos (1988-06-09)  (aged 23) Werder Bremen
  50. 20  DF  Jose Holebas              (1984-06-27)  (aged 27) Olympiacos
  51. 21  MF  Kostas Katsouranis        (1979-06-21)  (aged 32) Panathinaikos
  52. 22  MF  Kostas Fortounis          (1992-10-16)  (aged 19) Kaiserslautern
  53. 23  MF  Giannis Fetfatzidis       (1990-12-21)  (aged 21) Olympiacos

  54. Russia

  55. Head coach:  Dick Advocaat (Netherlands)

  56.   # Pos. Player              Date of Birth (Age)     Club
  57.   1  GK  Igor Akinfeev       (1986-04-08)  (aged 26) CSKA Moscow
  58.   2  DF  Aleksandr Anyukov   (1982-09-28)  (aged 29) Zenit Saint Petersburg
  59.   3  DF  Roman Sharonov      (1976-09-08)  (aged 35) Rubin Kazan
  60.   4  DF  Sergei Ignashevich  (1979-07-14)  (aged 32) CSKA Moscow
  61.   5  DF  Yuri Zhirkov        (1983-08-20)  (aged 28) Anzhi Makhachkala
  62.   6  MF  Roman Shirokov      (1981-07-06)  (aged 30) Zenit Saint Petersburg
  63.   7  MF  Igor Denisov        (1984-05-17)  (aged 28) Zenit Saint Petersburg
  64.   8  MF  Konstantin Zyryanov (1977-10-05)  (aged 34) Zenit Saint Petersburg
  65.   9  MF  Marat Izmailov      (1982-09-21)  (aged 29) Sporting CP
  66. 10  FW  Andrei Arshavin (c) (1981-05-29)  (aged 31) Zenit Saint Petersburg
  67. 11  FW  Aleksandr Kerzhakov (1982-11-27)  (aged 29) Zenit Saint Petersburg
  68. 12  DF  Aleksei Berezutski  (1982-06-20)  (aged 29) CSKA Moscow
  69. 13  GK  Anton Shunin        (1987-01-27)  (aged 25) Dynamo Moscow
  70. 14  FW  Roman Pavlyuchenko  (1981-12-15)  (aged 30) Lokomotiv Moscow
  71. 15  MF  Dmitri Kombarov     (1987-01-22)  (aged 25) Spartak Moscow
  72. 16  GK  Vyacheslav Malafeev (1979-03-04)  (aged 33) Zenit Saint Petersburg
  73. 17  MF  Alan Dzagoev        (1990-06-17)  (aged 21) CSKA Moscow
  74. 18  FW  Aleksandr Kokorin   (1991-03-19)  (aged 21) Dynamo Moscow
  75. 19  DF  Vladimir Granat     (1987-05-22)  (aged 25) Dynamo Moscow
  76. 20  FW  Pavel Pogrebnyak    (1983-11-08)  (aged 28) Fulham
  77. 21  DF  Kirill Nababkin     (1986-09-08)  (aged 25) CSKA Moscow
  78. 22  MF  Denis Glushakov     (1987-01-27)  (aged 25) Lokomotiv Moscow
  79. 23  MF  Igor Semshov        (1978-04-06)  (aged 34) Dynamo Moscow

  80. Czech Republic

  81. Head coach:  Michal Bilek (Czech Republic)

  82.   # Pos. Player                 Date of Birth (Age)     Club
  83.   1  GK  Petr Cech              (1982-05-20)  (aged 30) Chelsea
  84.   2  DF  Theodor Gebre Selassie (1986-12-24)  (aged 25) Slovan Liberec
  85.   3  DF  Michal Kadlec          (1984-12-13)  (aged 27) Bayer Leverkusen
  86.   4  DF  Marek Suchy            (1988-03-29)  (aged 24) Spartak Moscow
  87.   5  DF  Roman Hubnik           (1984-06-06)  (aged 28) Hertha BSC
  88.   6  DF  Tomas Sivok            (1983-09-15)  (aged 28) Besiktas
  89.   7  FW  Tomas Necid            (1989-08-13)  (aged 22) CSKA Moscow
  90.   8  DF  David Limbersky        (1983-10-06)  (aged 28) Viktoria Plzen
  91.   9  MF  Jan Rezek              (1982-05-05)  (aged 30) Anorthosis Famagusta
  92. 10  MF  Tomas Rosicky (c)      (1980-10-04)  (aged 31) Arsenal
  93. 11  MF  Milan Petrzela         (1983-06-19)  (aged 28) Viktoria Plzen
  94. 12  DF  Frantisek Rajtoral     (1986-03-12)  (aged 26) Viktoria Plzen
  95. 13  MF  Jaroslav Plasil        (1982-01-05)  (aged 30) Bordeaux
  96. 14  MF  Vaclav Pilar           (1988-10-13)  (aged 23) Viktoria Plzen
  97. 15  FW  Milan Baros            (1981-10-28)  (aged 30) Galatasaray
  98. 16  GK  Jan Lastuvka           (1982-07-07)  (aged 29) Dnipro Dnipropetrovsk
  99. 17  MF  Tomas Hubschman        (1981-09-04)  (aged 30) Shakhtar Donetsk
  100. 18  MF  Daniel Kolar           (1985-10-27)  (aged 26) Viktoria Plzen
  101. 19  MF  Petr Jiracek           (1986-03-02)  (aged 26) VfL Wolfsburg
  102. 20  FW  Tomas Pekhart          (1989-05-26)  (aged 23) Nurnberg
  103. 21  FW  David Lafata           (1981-09-18)  (aged 30) FK Jablonec
  104. 22  MF  Vladimir Darida        (1990-08-08)  (aged 21) FC Viktoria Plzen
  105. 23  GK  Jaroslav Drobny        (1979-10-18)  (aged 32) Hamburger SV

  106. Group B

  107. Netherlands

  108. Head coach:  Bert van Marwijk (Netherlands)

  109.   # Pos. Player               Date of Birth (Age)     Club
  110.   1  GK  Maarten Stekelenburg (1982-09-22)  (aged 29) Roma
  111.   2  DF  Gregory van der Wiel (1988-02-03)  (aged 24) Ajax
  112.   3  DF  John Heitinga        (1983-11-15)  (aged 28) Everton
  113.   4  DF  Joris Mathijsen      (1980-04-05)  (aged 32) Malaga
  114.   5  DF  Wilfred Bouma        (1978-06-15)  (aged 33) PSV
  115.   6  MF  Mark van Bommel (c)  (1977-04-22)  (aged 35) Milan
  116.   7  FW  Dirk Kuyt            (1980-07-22)  (aged 31) Liverpool
  117.   8  MF  Nigel de Jong        (1984-11-30)  (aged 27) Manchester City
  118.   9  FW  Klaas-Jan Huntelaar  (1983-08-12)  (aged 28) Schalke 04
  119. 10  MF  Wesley Sneijder      (1984-06-09)  (aged 27) Internazionale
  120. 11  FW  Arjen Robben         (1984-01-23)  (aged 28) Bayern Munich
  121. 12  GK  Michel Vorm          (1983-10-20)  (aged 28) Swansea City
  122. 13  DF  Ron Vlaar            (1985-02-16)  (aged 27) Feyenoord
  123. 14  DF  Stijn Schaars        (1984-01-11)  (aged 28) Sporting
  124. 15  DF  Jetro Willems        (1994-03-30)  (aged 18) PSV
  125. 16  FW  Robin van Persie     (1983-08-06)  (aged 28) Arsenal
  126. 17  MF  Kevin Strootman      (1990-02-13)  (aged 22) PSV
  127. 18  FW  Luuk de Jong         (1990-08-27)  (aged 21) Twente
  128. 19  FW  Luciano Narsingh     (1990-09-13)  (aged 21) Heerenveen
  129. 20  FW  Ibrahim Afellay      (1986-04-02)  (aged 26) Barcelona
  130. 21  DF  Khalid Boulahrouz    (1981-12-28)  (aged 30) VfB Stuttgart
  131. 22  GK  Tim Krul             (1988-04-03)  (aged 24) Newcastle United
  132. 23  MF  Rafael van der Vaart (1983-02-11)  (aged 29) Tottenham Hotspur

  133. Denmark

  134. Head coach:  Morten Olsen (Denmark)

  135.   # Pos. Player              Date of Birth (Age)     Club
  136.   1  GK  Kasper Schmeichel   (1986-11-05)  (aged 25) Leicester City
  137.   2  MF  Christian Poulsen   (1980-02-28)  (aged 32) Evian
  138.   3  DF  Simon Kjaer         (1989-03-26)  (aged 23) Roma
  139.   4  DF  Daniel Agger (c)    (1984-12-12)  (aged 27) Liverpool
  140.   5  DF  Simon Poulsen       (1984-10-07)  (aged 27) AZ
  141.   6  DF  Lars Jacobsen       (1979-09-20)  (aged 32) Copenhagen
  142.   7  MF  William Kvist       (1985-02-24)  (aged 27) VfB Stuttgart
  143.   8  MF  Christian Eriksen   (1992-02-14)  (aged 20) Ajax
  144.   9  FW  Michael Krohn-Dehli (1983-06-06)  (aged 29) Brondby
  145. 10  FW  Dennis Rommedahl    (1978-07-22)  (aged 33) Brondby
  146. 11  FW  Nicklas Bendtner    (1988-01-16)  (aged 24) Arsenal
  147. 12  DF  Andreas Bjelland    (1988-07-11)  (aged 23) Nordsjaelland
  148. 13  DF  Jores Okore         (1992-08-11)  (aged 19) Nordsjaelland
  149. 14  MF  Lasse Schone        (1986-05-27)  (aged 26) NEC
  150. 15  MF  Michael Silberbauer (1981-07-07)  (aged 30) Young Boys
  151. 16  GK  Stephan Andersen    (1981-11-26)  (aged 30) Evian
  152. 17  FW  Nicklas Pedersen    (1987-10-10)  (aged 24) Groningen
  153. 18  DF  Daniel Wass         (1989-05-31)  (aged 23) Evian
  154. 19  MF  Jakob Poulsen       (1983-07-07)  (aged 28) Midtjylland
  155. 20  MF  Thomas Kahlenberg   (1983-03-20)  (aged 29) Evian
  156. 21  MF  Niki Zimling        (1985-04-19)  (aged 27) Club Brugge
  157. 22  GK  Anders Lindegaard   (1984-04-13)  (aged 28) Manchester United
  158. 23  FW  Tobias Mikkelsen    (1986-09-18)  (aged 25) Nordsjaelland

  159. Germany

  160. Head coach:  Joachim Low (Germany)

  161.   # Pos. Player                 Date of Birth (Age)     Club
  162.   1  GK  Manuel Neuer           (1986-03-27)  (aged 26) Bayern Munich
  163.   2  MF  Ilkay Gundogan         (1990-10-24)  (aged 21) Borussia Dortmund
  164.   3  DF  Marcel Schmelzer       (1988-01-22)  (aged 24) Borussia Dortmund
  165.   4  DF  Benedikt Howedes       (1988-02-29)  (aged 24) Schalke 04
  166.   5  DF  Mats Hummels           (1988-12-16)  (aged 23) Borussia Dortmund
  167.   6  MF  Sami Khedira           (1987-04-04)  (aged 25) Real Madrid
  168.   7  MF  Bastian Schweinsteiger (1984-08-01)  (aged 27) Bayern Munich
  169.   8  MF  Mesut Ozil             (1988-10-15)  (aged 23) Real Madrid
  170.   9  MF  Andre Schurrle         (1990-11-06)  (aged 21) Bayer Leverkusen
  171. 10  MF  Lukas Podolski         (1985-06-04)  (aged 27) Koln
  172. 11  FW  Miroslav Klose         (1978-06-09)  (aged 33) Lazio
  173. 12  GK  Tim Wiese              (1981-12-17)  (aged 30) Werder Bremen
  174. 13  MF  Thomas Muller          (1989-09-13)  (aged 22) Bayern Munich
  175. 14  DF  Holger Badstuber       (1989-03-13)  (aged 23) Bayern Munich
  176. 15  MF  Lars Bender            (1989-04-27)  (aged 23) Bayer Leverkusen
  177. 16  DF  Philipp Lahm (c)       (1983-11-11)  (aged 28) Bayern Munich
  178. 17  DF  Per Mertesacker        (1984-09-29)  (aged 27) Arsenal
  179. 18  MF  Toni Kroos             (1990-01-04)  (aged 22) Bayern Munich
  180. 19  MF  Mario Gotze            (1992-06-03)  (aged 20) Borussia Dortmund
  181. 20  DF  Jerome Boateng         (1988-09-03)  (aged 23) Bayern Munich
  182. 21  MF  Marco Reus             (1989-05-31)  (aged 23) Borussia Mochengladbach
  183. 22  GK  Ron-Robert Zieler      (1989-02-12)  (aged 23) Hannover 96
  184. 23  FW  Mario Gomez            (1985-07-10)  (aged 26) Bayern Munich

  185. Portugal

  186. Head coach:  Paulo Bento (Portugal)

  187.   # Pos. Player                Date of Birth (Age)     Club
  188.   1  GK  Eduardo               (1982-09-19)  (aged 29) Benfica
  189.   2  DF  Bruno Alves           (1981-11-27)  (aged 30) Zenit Saint Petersburg
  190.   3  DF  Pepe                  (1983-02-26)  (aged 29) Real Madrid
  191.   4  MF  Miguel Veloso         (1986-05-11)  (aged 26) Genoa
  192.   5  DF  Fabio Coentrao        (1988-03-11)  (aged 24) Real Madrid
  193.   6  MF  Custodio              (1983-05-24)  (aged 29) Braga
  194.   7  FW  Cristiano Ronaldo (c) (1985-02-05)  (aged 27) Real Madrid
  195.   8  MF  Joao Moutinho         (1986-09-08)  (aged 25) Porto
  196.   9  FW  Hugo Almeida          (1984-05-23)  (aged 28) Besiktas
  197. 10  FW  Ricardo Quaresma      (1983-09-26)  (aged 28) Besiktas
  198. 11  FW  Nelson Oliveira       (1991-08-08)  (aged 20) Benfica
  199. 12  GK  Rui Patricio          (1988-02-15)  (aged 24) Sporting CP
  200. 13  DF  Ricardo Costa         (1981-05-16)  (aged 31) Valencia
  201. 14  DF  Rolando               (1985-08-31)  (aged 26) Porto
  202. 15  MF  Ruben Micael          (1986-08-19)  (aged 25) Atletico Madrid
  203. 16  MF  Raul Meireles         (1983-03-17)  (aged 29) Chelsea
  204. 17  FW  Nani                  (1986-11-17)  (aged 25) Manchester United
  205. 18  FW  Silvestre Varela      (1985-02-02)  (aged 27) Porto
  206. 19  DF  Miguel Lopes          (1986-12-19)  (aged 25) Braga
  207. 20  MF  Hugo Viana            (1983-01-15)  (aged 29) Braga
  208. 21  DF  Joao Pereira          (1984-02-25)  (aged 28) Sporting CP
  209. 22  GK  Beto                  (1982-05-01)  (aged 30) CFR Cluj
  210. 23  FW  Helder Postiga        (1982-08-02)  (aged 29) Real Zaragoza
复制代码

name.rar

8.35 KB, 下载次数: 171

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
发表于 2012-06-01 14:50 |显示全部楼层
本帖最后由 rdcwayx 于 2012-06-18 08:31 编辑

1/2 .年纪最小的人, 年纪最大的人 (第六页hjason2042说的对,修改一下)
  1. awk -F"[()]" -v min=100000000 '{d=(NF==7)?$4:$2;gsub(/-/,"",d)}
  2.     NR==FNR&&/-/{min=(min>int(d))?d:min;max=(max<d)?d:max}
  3.     NR>FNR&&/-/{if (min==d) print "The oldest player is " , substr($1,10),min;
  4.                 if (max==d) print "The youngest player is " , substr($1,10),max}' name.txt name.txt
  5. The oldest player is  Kostas Chalkias            19740530
  6. The youngest player is  Jetro Willems         19940330
复制代码
3.哪一天出生的人最多
按日期算
  1. awk -F"[()]" '/-/{d=(NF==7)?$4:$2;if (a[d]++>max) max=a[d]}END{for (i in a) if (a[i]==max) print i,a[i]}' name.txt
  2. 1989-05-31 2
  3. 1987-01-22 2
  4. 1987-01-27 2
  5. 1984-06-28 2
  6. 1984-12-13 2
  7. 1982-05-01 2
  8. 1985-08-20 2
  9. 1987-07-28 2
  10. 1983-07-07 2
  11. 1981-10-03 2
  12. 1981-10-29 2
  13. 1986-09-08 2
复制代码
按生日算
  1. awk -F"[()]" '/-/{d=(NF==7)?$4:$2;d=substr(d,6);if (a[d]++>max) max=a[d]}END{for (i in a) if (a[i]==max) print i,a[i]}' name.txt
  2. 03-30 4
  3. 07-07 4
  4. 06-09 4
复制代码
4.和你生日相同的人,如果有的话找出来

应该是找生日而已,没必要找同一年份的吧。
  1. #!/usr/bin/bash
  2. echo "Usage: $0 MM-DD"
  3. birthday=$1
  4. grep "$birthday)" name.txt
复制代码
5.给定一个球员名,列出国籍与教练,处在哪个小组
(不用管全名还是部分姓名)
  1. name=Damien
  2. awk -v n=$name '/^Group/{g=$0;next} !/[:|\-|#]/&&NF>0{c=$0;next}/^Head coach/{split($0,b,":");h=b[2];next}/-/{split($0,a,"(");if (a[1]~n) {printf "The player %s is in group %s, he comes from %s, and his coach is %s, \nhere is his full information: %s\n", n,g,c,h,$0;}}' name.txt
  3. The player Damien is in group Group A, he comes from Poland, and his coach is   Franciszek Smuda (Poland),
  4. here is his full information:   4  DF  Damien Perquis           (1984-10-04)  (aged 27) Sochaux
  5. The player Damien is in group Group C, he comes from Republic of Ireland, and his coach is   Giovanni Trapattoni(Italy),
  6. here is his full information:  11  MF  Damien Duff      (1979-03-02)  (aged 33) Fulham
复制代码
6.哪个俱乐部的人最多
  1. awk -F"[()]" '/-/{if (++a[$NF]>max){max=a[$NF];name=$NF}}END{print max,name}' name.txt
  2. 13  Bayern Munich
复制代码
7.队长里打什么位置的最多
  1. awk '/\(c\)/{max=(a[$2]++>max)?$2:max}END{print max}' name.txt
  2. MF
复制代码
8.比你年纪大的有多少人
  1. #!/usr/bin/bash
  2. echo "Usage: $0 YYYY-MM-DD"
  3. birthday=$1
  4. awk -v b=$birthday -F"[()]" '/-/{d=(NF==7)?$4:$2;if ($2<b) print substr($1,10)}' name.txt
复制代码
9.列出365天里所有人都不过生日的日期
(今年刚好是闰年,366天)
  1. seq 0 365|while read line
  2. do   
  3.     d=$(date -d "Jan 1 +$line days " +%m-%d)
  4.     if [[ `grep "$d)" name.txt` == "" ]]; then
  5.          echo "$d"
  6.     fi
  7. done
复制代码
10.打各个位置的人一共有多少
(第10题和第七题有些重复啊。)
  1. awk '/-/{a[$2]++}END{for(i in a) print a[i],i}' name.txt
  2. 76 FW
  3. 48 GK
  4. 130 MF
  5. 114 DF
复制代码

论坛徽章:
0
发表于 2012-06-01 15:05 |显示全部楼层
本帖最后由 jils2013 于 2012-06-01 18:05 编辑

1.年纪最小的人
  1. [root@localhost shell]# awk --posix 'BEGIN{maxyear=70;}/\([0-9]{4}(-[0-9]{2}){2}\)/\
  2.                      {birthD=substr($0,index($0,"(19")+3,8);split(birthD,date,"-");
  3.                       year=date[1];month=date[2];day=date[3];
  4.                       if(year>maxyear){younplayer=$0;maxyear=year;maxmon=month;maxday=day;}
  5.                       else{if(year==maxyear){if(month>maxmon){younplayer=$0;maxyear=year;maxmon=month;maxday=day;}
  6.                       else{if(month==maxmon){if(day>maxday){younplayer=$0;maxyear=year;maxmon=month;maxday=day;}
  7.                       else{if(day==maxday)younplayer=younplayer"\n"$0;}}}}}
  8.                      }END{print younplayer}' name.txt
  9. 15  DF  Jetro Willems        (1994-03-30)  (aged 18) PSV
复制代码
2.年纪最大的人
  1. [root@localhost shell]# awk --posix 'BEGIN{minyear=90}/\([0-9]{4}(-[0-9]{2}){2}\)/\
  2.                      {birthD=substr($0,index($0,"(19")+3,8);split(birthD,date,"-");
  3.                       year=date[1];month=date[2];day=date[3];
  4.                       if(year<minyear){oldplayer=$0;minyear=year;minmon=month;minday=day;}
  5.                       else{if(year==minyear){if(month<minmon){oldplayer=$0;minyear=year;minmon=month;minday=day;}
  6.                       else{if(month==minmon){if(day<minday){oldplayer=$0;minyear=year;minmon=month;minday=day;}
  7.                       else{if(day==minday)oldplayer=oldplayer"\n"$0}}}}}
  8.                      }END{print oldplayer}' name.txt
  9.   1  GK  Kostas Chalkias           (1974-05-30)  (aged 38) P.A.O.K.
复制代码
3.哪一天出生的人最多
--包括年号
  1. [root@localhost shell]# awk --posix '/\([0-9]{4}(-[0-9]{2}){2}\)/{birthD=substr($0,index($0,"(19")+3,8);n[birthD]++;if(n[birthD]>maxn){maxn=n[birthD];maxi=birthD}}END{print maxn":19"maxi}'  name.txt
  2. 2:1987-01-27
复制代码
--不包括年号
  1. [root@localhost shell]# awk --posix 'BEGIN{FS=" \\(19";}/\([0-9]{4}(-[0-9]{2}){2}\)/{birthD=substr($0,index($0,"(19")+6,5);n[birthD]++;if(n[birthD]>maxn){maxn=n[birthD];maxi=birthD}}END{print maxn":"maxi}' name.txt
  2. 4:07-07
复制代码
4.和你生日相同的人,如果有的话找出来
  1. [root@localhost shell]# grep "\-07-07" name.txt
  2. 14  DF  Jakub Wawrzyniak         (1983-07-07)  (aged 28) Legia Warsaw
  3. 16  GK  Jan Lastuvka           (1982-07-07)  (aged 29) Dnipro Dnipropetrovsk
  4. 15  MF  Michael Silberbauer (1981-07-07)  (aged 30) Young Boys
  5. 19  MF  Jakob Poulsen       (1983-07-07)  (aged 28) Midtjylland
复制代码
5.给定一个球员名,列出国籍与教练,处在哪个小组
  1. [root@localhost shell]# awk 'BEGIN{FS="[\n\r]+";RS="Group "}index($0,"Rafal Murawski")!=0{NF+=0;print $1,$2,$3}' name.txt
  2. A Poland Head coach:  Franciszek Smuda (Poland)
复制代码
6.哪个俱乐部的人最多
  1. [root@localhost shell]# awk --posix 'BEGIN{FS="\\(aged [0-9]{2}\\) ";}/\([0-9]{4}(-[0-9]{2}){2}\)/{NF+=0;n[$2]++;if(n[$2]>maxn){maxn=n[$2];maxi=$2;}}END{print maxn":"maxi}' name.txt
  2. 13:Bayern Munich
复制代码
7.队长里打什么位置的最多
  1. [root@localhost shell]# awk --posix '/ \(c\)[ ]+\([0-9]{4}(-[0-9]{2}){2}\)/{n[$2]++;if(n[$2]>maxn){maxn=n[$2];maxi=$2;}}END{print maxn":"maxi}' name.txt
  2. 6:MF
复制代码
8.比你年纪大的有多少人
  1. [root@localhost shell]# awk --posix 'BEGIN{split("1987-02-02",mindate,"-");
  2.                                minyear=mindate[1];minmon=mindate[2];minday=mindate[3];}
  3.                      /\([0-9]{4}(-[0-9]{2}){2}\)/\
  4.                      {birthD=substr($0,index($0,"(19")+1,10);split(birthD,date,"-");
  5.                       year=date[1];month=date[2];day=date[3];
  6.                       if(year<minyear){n++;}
  7.                       else{if(year==minyear){if(month<minmon){n++;}
  8.                       else{if(month==minmon){if(day<minday){n++;;}}}}}}END{print n;}' name.txt
  9. 267
复制代码
--把n++替换成print $0 可以输出年龄大的人,可以wc -l 顺便验证下

9.列出365天里所有人都不过生日的日期
日期遍历...
  1. [root@localhost shell]# cat nobirthday.sh
  2. for((i=1;i<=12;i++))
  3. do
  4. case $i in
  5.   1|3|5|7|8|10|12) D=31;;
  6.   2) D=28;;
  7.   *) D=30;;
  8. esac
  9. echo $i":"$D
  10. for((d=1;d<=$D;d++))
  11.   do
  12.    [ `expr length $i` == 1 ] && str="0"$i
  13.    [ `expr length $d` == 1 ] && str=$str"-0"$d
  14.    [ `expr length $i` == 2 ] && str=$i
  15.    [ `expr length $d` == 2 ] && str=$str"-"$d
  16.    [ `grep -c $str name.txt` == 0 ] && echo "$str : no player was born this day"
  17.   done
  18. done
  19. [root@localhost shell]# ./nobirthday.sh | more
  20. 1:31
  21. 01-01 : no player was born this day
  22. 01-03 : no player was born this day
  23. 01-07 : no player was born this day
  24. 01-20 : no player was born this day
  25. 01-21 : no player was born this day
  26. 01-29 : no player was born this day
  27. ....
复制代码
10.打各个位置的人一共有多少[
  1. root@localhost shell]# awk --posix '/\([0-9]{4}(-[0-9]{2}){2}\)/{n[$2]++;}END{for(i in n)print i":"n[i]}' name.txt
  2. FW:76
  3. GK:48
  4. MF:130
  5. DF:114
复制代码

论坛徽章:
0
发表于 2012-06-03 00:10 |显示全部楼层
本帖最后由 nmweizi 于 2012-06-03 14:02 编辑

不知道用python写算不算,代码写的比较丑陋,请大家多原谅
  1. header = True
  2. for i in f.readlines():
  3.     #d = []
  4.     i = i.strip()
  5.     if len(i) > 0 and len(i) <50:
  6.         if header:
  7.             d = []
  8.             
  9.             header = False
  10.         d.append(i)
  11.         #print d   
  12.     #else:
  13.     if len(i) > 50 :
  14.         #print d
  15.         header = True
  16.         if i[0]<>'#':
  17.             
  18.             i1 = re.sub('\s{2,}|\s+\(|\)\s+','|',i)
  19.             i2 = re.sub('\)\s*\||\(aged','',i1)
  20.         
  21.             i3 = re.sub('\|\s*\(','|',i2)
  22.             i4 = re.sub('\|\s*c\s*\|',' (c) |',i3)
  23.             
  24.             if len(d) ==2:
  25.                 d.insert(0,d1)
  26.             else:
  27.                 d1 =d[0]
  28.             g.write(i4+'|'+'|'.join(d) +'\n')
  29.         
  30. g.close()
  31. f.close()

  32. import datetime
  33. def date_converter(date_string):
  34.     return datetime.datetime.strptime(date_string, '%Y-%m-%d').date()
  35. df = read_csv('e:/temp/name3.txt',parse_dates=True,sep='\|',names=['#', 'Pos.', 'Player','Date of Birth', 'Age','Club','group','gj','jl'],converters={3:date_converter})
  36. df.head()
复制代码
Out[43]:
   # Pos.               Player Date of Birth  Age           Club    group      gj                                      jl    sr
0  1   GK    Wojciech Szczesny    1990-04-18   22        Arsenal  Group A  Poland  Head coach:  Franciszek Smuda (Poland)  4-18
1  2   DF   Sebastian Boenisch    1987-02-01   25  Werder Bremen  Group A  Poland  Head coach:  Franciszek Smuda (Poland)   2-1
2  3   DF  Grzegorz Wojtkowiak    1984-01-26   28    Lech Poznan  Group A  Poland  Head coach:  Franciszek Smuda (Poland)  1-26
3  4   DF       Damien Perquis    1984-10-04   27        Sochaux  Group A  Poland  Head coach:  Franciszek Smuda (Poland)  10-4
4  5   MF        Dariusz Dudka    1983-12-09   28        Auxerre  Group A  Poland  Head coach:  Franciszek Smuda (Poland)  12-9

1.年纪最小的人

  1. df.min(axis=0)
  2. df.Age.min()   #这个也可以
复制代码
(Age)                         18

2.年纪最大的人

  1. df.max(axis=0)
  2. df.Age.max()    #这个也可以
复制代码
(Age)                                 38

3.哪一天出生的人最多
  1. df.groupby(['Date of Birth']).count().sort('Date of Birth', ascending = False)['#']
复制代码
Date of Birth
1982-05-01       2
1987-01-27       2
1981-10-03       2
1986-09-08       2
1981-10-29       2
1984-06-28       2
1987-01-22       2
1987-07-28       2
1989-05-31       2
1983-07-07       2
1984-12-13       2
1985-08-20       2
1983-05-02       1
如果只比较天
  1. nian = lambda x: x.day
  2. df['sr'] = df['Date of Birth'].map(nian)
  3. df.groupby(['sr']).count().sort('Date of Birth', ascending = False)['#']
复制代码
sr
13    18
20    18
27    17
28    16
9     16
4     15
26    14
12    14
3     13
8     13
19    13
6     12
10    12
17    12
21    12

按月日计算
  1. nian = lambda x: str(x.month)+'-'+str(x.day)
  2. df['sr'] = df['Date of Birth'].map(nian)
  3. df.groupby(['sr']).count().sort('Date of Birth', ascending = False)['#']
复制代码
Out[29]:
sr
6-9      4
3-30     4
7-7      4
10-27    3
7-28     3
5-31     3
9-8      3


4.和你生日相同的人,如果有的话找出来
  1. nian = lambda x: x ==datetime(1983,12,9).date()
  2. df['sr'] = df['Date of Birth'].map(nian)
  3. print df[df['sr']]
复制代码
# Pos.         Player Date of Birth  Age     Club    group      gj                                      jl                   rq    sr
4  5   MF  Dariusz Dudka    1983-12-09   28  Auxerre  Group A  Poland  Head coach:  Franciszek Smuda (Poland)   True


如果不算年的话
  1. nian = lambda x: x.month ==12 and x.day==9
  2. df['sr'] = df['Date of Birth'].map(nian)
  3. print df[df['sr']]
复制代码
# Pos.         Player Date of Birth  Age         Club    group       gj                                      jl    sr
4    5   MF  Dariusz Dudka    1983-12-09   28      Auxerre  Group A   Poland  Head coach:  Franciszek Smuda (Poland)  True
276  1   GK   Maksym Koval    1992-12-09   19  Dynamo Kyiv  Group D  Ukraine     Head coach:  Oleh Blokhin (Ukraine)  True

5.给定一个球员名,列出国籍与教练,处在哪个小组
  1. print df[df['Player']=='Simon Cox'][['gj','jl','group']]
复制代码
gj                                       jl    group
249  Republic of Ireland  Head coach:  Giovanni Trapattoni(Italy)  Group C


6.哪个俱乐部的人最多
  1. df.groupby(['Club']).count().sort('Club', ascending = False)['#']
复制代码
Out[145]:
Club
Bayern Munich              13
Real Madrid                11
Dynamo Kyiv                10
Chelsea                     9
Zenit Saint Petersburg      8
Arsenal                     8
Barcelona                   8
Shakhtar Donetsk            8
Borussia Dortmund           8
Manchester City             8
Manchester United           7
Juventus                    7
CSKA Moscow                 7
Liverpool                   7
Olympiacos                  6

7.队长里打什么位置的最多
  1. f = lambda x: '(c)' in x
  2. df['dz'] = df['Player'].map(f)
  3. df.groupby(['dz','Pos.']).count().sort('Pos.', ascending = False)['Pos.']
复制代码
dz     Pos.
False  MF      124
       DF      112
       FW       71
       GK       45
True   MF        6
       FW        5
       GK        3
       DF        2


        
8.比你年纪大的有多少人
  1. nian = lambda x: x >datetime(1983,12,9).date()
  2. df['sr'] = df['Date of Birth'].map(nian)
  3. df[df['sr']].count()
复制代码
#                222


9.列出365天里所有人都不过生日的日期
  1. from datetime import datetime
  2. from pandas.core.datetools import *
  3. start = datetime(2012, 1, 1)
  4. end = datetime(2012, 12, 31)
  5. rng = DateRange(start, end, offset=BDay())
  6. nian = lambda x: datetime(2012,x.month,x.day)
  7. df['rq'] =df['Date of Birth'].map(nian)   
  8. (rng-df['rq']).map(lambda x: [str(x.month)+'-'+str(x.day)])
复制代码
Out[158]:
array([['1-1'], ['1-3'], ['1-7'], ['1-20'], ['1-21'], ['1-29'], ['1-30'],
       ['1-31'], ['2-6'], ['2-7'], ['2-8'], ['2-10'], ['2-17'], ['2-19'],
       ['2-22'], ['2-27'], ['3-1'], ['3-3'], ['3-5'], ['3-8'], ['3-14'],
       ['3-15'], ['3-22'], ['3-23'], ['3-24'], ['3-25'], ['3-31'], ['4-1'],
       ['4-11'], ['4-12'], ['4-14'], ['4-15'], ['4-17'], ['4-23'],
       ['4-24'], ['4-26'], ['5-3'], ['5-6'], ['5-10'], ['5-12'], ['5-14'],
       ['5-18'], ['5-25'], ['5-28'], ['6-1'], ['6-2'], ['6-5'], ['6-7'],
       ['6-11'], ['6-14'], ['6-16'], ['6-18'], ['6-23'], ['6-24'],
       ['6-26'], ['6-30'], ['7-1'], ['7-2'], ['7-4'], ['7-5'], ['7-13'],
       ['7-18'], ['7-19'], ['7-23'], ['7-25'], ['7-27'], ['7-29'],
       ['7-30'], ['7-31'], ['8-5'], ['8-7'], ['8-9'], ['8-10'], ['8-22'],
       ['8-25'], ['8-26'], ['8-29'], ['9-1'], ['9-7'], ['9-11'], ['9-16'],
       ['9-17'], ['9-23'], ['9-24'], ['9-25'], ['10-1'], ['10-2'],
       ['10-8'], ['10-11'], ['10-14'], ['10-17'], ['10-19'], ['10-21'],
       ['10-26'], ['10-30'], ['10-31'], ['11-2'], ['11-3'], ['11-7'],
       ['11-9'], ['11-13'], ['11-14'], ['11-16'], ['11-18'], ['11-19'],
       ['11-20'], ['11-22'], ['11-23'], ['11-24'], ['11-28'], ['11-29'],
       ['12-1'], ['12-4'], ['12-5'], ['12-10'], ['12-18'], ['12-22'],
       ['12-23'], ['12-25'], ['12-29'], ['12-31']], dtype=object)



10.打各个位置的人一共有多少
  1. df.groupby('Pos.').count().sort('Pos.', ascending = False)['Pos.']
复制代码
Out[418]:
Pos.
MF      130
DF      114
FW       76
GK       48

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2012-06-01 07:00 |显示全部楼层
看球、做题、博彩,需要同时进行

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2012-06-01 07:00 |显示全部楼层
回复 1# mpstat


    NB的题目,应该发到运动版吧。

论坛徽章:
0
发表于 2012-06-01 09:00 |显示全部楼层
很有意思、有空来练习

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
发表于 2012-06-01 11:37 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2012-06-01 11:39 |显示全部楼层
怎么没有人动手呢?广大球迷们。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
发表于 2012-06-01 15:07 |显示全部楼层
本帖最后由 rdcwayx 于 2012-06-01 20:35 编辑

11. 画出运动员各年龄段的分布图
  1. awk -F"[()]" '/-/{d=(NF==7)?$6:$4;a[d]++}END{for (i in a) {s="";for (j=1;j<=a[i];j++) s="*"s;print i,s|"sort -k2n"}}' name.txt
  2. aged 18 **
  3. aged 19 *****
  4. aged 20 ******
  5. aged 21 **************
  6. aged 22 ************
  7. aged 23 ***********************
  8. aged 24 ****************************
  9. aged 25 ****************************************
  10. aged 26 ***********************************
  11. aged 27 *********************************************
  12. aged 28 ********************************
  13. aged 29 *********************************
  14. aged 30 *******************************
  15. aged 31 *******************
  16. aged 32 *****************
  17. aged 33 **********
  18. aged 34 ******
  19. aged 35 ******
  20. aged 36 ***
  21. aged 38 *
复制代码

论坛徽章:
0
发表于 2012-06-01 15:11 |显示全部楼层
rdcwayx 发表于 2012-06-01 14:50
1.年纪最小的人
2.年纪最大的人3.哪一天出生的人最多



我当时贴题目的时候就在想要不要把括号都去了增加一下难度,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP