免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1690 | 回复: 8
打印 上一主题 下一主题

如何匹配一个组合? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-29 18:15 |只看该作者 |倒序浏览
本帖最后由 qishking 于 2012-05-29 19:06 编辑

20120529.zip (6.17 KB, 下载次数: 6)
  1. 1        12        14        15        17        29
  2. 2        3        4        9        24        25
  3. 9        11        14        16        27        28
  4. 6        8        19        25        29        32
  5. 1        20        21        25        29        30
  6. 5        21        23        25        28        32
  7. 1        8        11        12        27        31
  8. 4        7        11        19        23        26
  9. 3        5        11        24        27        28
  10. 13        16        19        20        23        33
  11. 1        12        25        27        28        29
  12. 7        10        13        16        27        28
  13. 14        15        18        20        27        31
  14. 13        14        27        29        32        33
  15. 5        13        20        23        24        25
  16. 1        6        7        13        16        32
  17. 2        8        11        13        24        31
  18. 2        11        15        20        22        29
  19. 10        12        21        22        30        33
  20. 3        8        16        17        21        29
  21. 8        15        18        28        30        33
  22. 2        7        13        16        23        28
  23. 5        6        15        19        26        29
  24. 7        18        21        26        27        28
  25. 3        5        13        17        25        31
  26. 8        9        10        14        16        26
  27. 4        5        10        21        24        26
  28. 7        13        14        17        19        30
  29. 3        8        20        23        24        26
  30. 3        5        21        24        27        32
  31. 3        20        24        27        29        30
  32. 14        16        27        28        30        33
  33. 1        4        8        11        21        25
  34. 3        8        11        29        30        32
  35. 10        13        18        19        25        27
  36. 1        3        7        8        25        26
  37. 2        10        19        22        24        32
  38. 14        17        20        25        28        30
  39. 1        18        20        24        32        33
  40. 9        13        14        21        30        33
  41. 1        4        8        13        28        31
  42. 11        14        20        27        32        33
  43. 5        9        10        13        24        25
  44. 19        22        27        28        30        32
  45. 1        4        12        16        20        30
  46. 10        19        20        26        29        31
  47. 3        12        13        25        26        31
  48. 5        10        21        22        26        33
  49. 6        8        9        14        24        33
  50. 2        9        14        19        25        26
  51. 3        9        12        15        28        32
  52. 2        3        5        9        16        21
  53. 7        11        17        18        24        29
  54. 7        9        10        21        23        30
  55. 10        15        23        26        28        29
  56. 1        8        12        13        18        20
  57. 8        13        14        27        28        31
  58. 6        8        10        17        30        31
  59. 14        19        20        21        22        31
复制代码
例如,匹配所有包括
  1. 10 12 21 23
复制代码
的行,但不一定是这个顺序,它是一个组合,任何位置都可以有其它数字,每一行的数字都是从小到大排列
期望代码可以通用在包含5,6个元素的模式


难度又增加了:把有4个元素相同的行全部打印出来,不参考位置
例如这样的情况:第1,2行相同的元素是
  1. 1 2 3 4
复制代码
,第7,8,n行相同元素是
  1. 14 18 20 30
复制代码
都打印出来。

论坛徽章:
0
2 [报告]
发表于 2012-05-29 18:38 |只看该作者
  1. sed '/10/!d;/12/!d;/21/!d;/23/!d' urfile
复制代码
试下这个

论坛徽章:
0
3 [报告]
发表于 2012-05-29 18:42 |只看该作者
  1. awk '{if(match($0,/10/) && match($0,/12/) && match($0,/21/) && match($0,/23/))print}' urfile
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-05-29 19:04 |只看该作者
kk5234 发表于 2012-05-29 18:42
可以匹配到,谢谢

难度又增加了:把有4个元素相同的行全部打印出来,不参考位置
包括这样的情况:第1,2行相同的元素是
  1. 1 2 3 4
复制代码
,第7,8,n行相同元素是
  1. 14 18 20 30
复制代码
都打印出来。

论坛徽章:
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
5 [报告]
发表于 2012-05-30 08:49 |只看该作者
kk5234 发表于 2012-05-29 18:42
awk '{if(match($0,/10/) && match($0,/12/) && match($0,/21/) && match($0,/23/))print}' urfile
  1. awk '/10/&&/12/&&/21/&&/23/' infile
复制代码

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
6 [报告]
发表于 2012-05-30 09:04 |只看该作者
完全看不懂。。。。。。

论坛徽章:
0
7 [报告]
发表于 2012-05-30 09:07 |只看该作者
回复 5# rdcwayx
版主的方法更加简单,学习了!

   

论坛徽章:
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
8 [报告]
发表于 2012-05-31 13:23 |只看该作者
qishking 发表于 2012-05-29 19:04
可以匹配到,谢谢

难度又增加了:把有4个元素相同的行全部打印出来,不参考位置,

问题好像没讲清楚,没看见1,2行有重复的。7,8 行也只有一个重复。

论坛徽章:
0
9 [报告]
发表于 2012-05-31 14:36 |只看该作者
本帖最后由 qishking 于 2012-05-31 14:37 编辑
rdcwayx 发表于 2012-05-31 13:23
问题好像没讲清楚,没看见1,2行有重复的。7,8 行也只有一个重复。


这样说吧:每行有六个元素,划分4个元素做为一个组合,一共有15种组合;然后比较每两行中的15个组合,如果两行或多行中有一个组合相同,即符合条件,把这些行都打印出来,遍历整个文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP