免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何将3个文本全排列到第四文本? [复制链接]

论坛徽章:
1
白羊座
日期:2014-11-13 10:19:16
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-08 21:56 |只看该作者 |倒序浏览
本帖最后由 iocg 于 2014-06-08 21:59 编辑

          我有3个文本需要进行全排列
1.txt
  1. gray
  2. blue
  3. ...
复制代码
2.txt
  1. yellow
  2. white
  3. black
  4. ...
复制代码
3.txt
  1. red
  2. orange
  3. ...
复制代码
输出到4.txt
  1. gray yellow red
  2. gray yellow orange
  3. gray yellow ...
  4. gray white red
  5. gray white orange
  6. gray white ...
  7. gray black red
  8. gray black orange
  9. gray black ...
  10. gray ... red
  11. gray ... orange
  12. gray ... ...
  13. blue yellow orange
  14. blue yellow ...
  15. blue white red
  16. blue white orange
  17. blue white ...
  18. blue black red
  19. blue black orange
  20. blue black ...
  21. blue ... red
  22. blue ... orange
  23. blue ... ...
  24. ... yellow red
  25. ... yellow orange
  26. ... yellow ...
  27. ... white red
  28. ... white orange
  29. ... white ...
  30. ... black red
  31. ... black orange
  32. ... black ...
  33. ... ... red
  34. ... ... orange
  35. ... ... ...
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [报告]
发表于 2014-06-08 22:17 |只看该作者
回复 1# iocg
传说中的笛卡尔积?
   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2014-06-08 22:42 |只看该作者
回复 1# iocg


    目测是这个意思:
  1. eval echo {`paste -s -d, file1`}{`paste -s -d, file2`}{`paste -s -d, file3`}
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
4 [报告]
发表于 2014-06-08 22:52 |只看该作者
回复 1# iocg
  1. awk 'ARGIND==1{a[++n]=$0}ARGIND==2{b[++x]=$0}ARGIND==3{c[++y]=$0}END{for(i=0;i++<n;)for(j=0;j++<x;)for(k=0;k++<y;)print a[i],b[j],c[k]}' [1-3].txt
  2. gray yellow red
  3. gray yellow orange
  4. gray yellow ...
  5. gray white red
  6. gray white orange
  7. gray white ...
  8. gray black red
  9. gray black orange
  10. gray black ...
  11. gray ... red
  12. gray ... orange
  13. gray ... ...
  14. blue yellow red
  15. blue yellow orange
  16. blue yellow ...
  17. blue white red
  18. blue white orange
  19. blue white ...
  20. blue black red
  21. blue black orange
  22. blue black ...
  23. blue ... red
  24. blue ... orange
  25. blue ... ...
  26. ... yellow red
  27. ... yellow orange
  28. ... yellow ...
  29. ... white red
  30. ... white orange
  31. ... white ...
  32. ... black red
  33. ... black orange
  34. ... black ...
  35. ... ... red
  36. ... ... orange
  37. ... ... ...
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
5 [报告]
发表于 2014-06-09 13:59 |只看该作者
回复 3# 关阴月飞


    这个简洁,顶。
有个可能是文件内容多的话超过一行的最大字符,所以我做了点改动,改为文件名来做全排列调用paste,这样即使文件名再多点也不至于超出最大长度,应该是可以接受的。
  1. [seesea@UC ~]$ head *.txt
  2. ==> 1.txt <==
  3. 1
  4. 2
  5. 3

  6. ==> 2.txt <==
  7. a
  8. b
  9. c

  10. ==> 3.txt <==
  11. x
  12. y
  13. z
  14. [seesea@UC ~]$ eval "`echo -e "paste -d' ' "{1..3}".txt "{1..3}".txt "{1..3}".txt\n" | sed -nr '/([^\n]+.txt)[^\n]*\1/b; p'`"
  15. 1 a x
  16. 2 b y
  17. 3 c z
  18. 1 x a
  19. 2 y b
  20. 3 z c
  21. a 1 x
  22. b 2 y
  23. c 3 z
  24. a x 1
  25. b y 2
  26. c z 3
  27. x 1 a
  28. y 2 b
  29. z 3 c
  30. x a 1
  31. y b 2
  32. z c 3
复制代码

论坛徽章:
6
处女座
日期:2014-04-02 16:07:17酉鸡
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龙
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
6 [报告]
发表于 2014-06-10 11:49 |只看该作者
回复 3# 关阴月飞


    求教,这个是怎么实现的。 {} 在这的作用是?

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
7 [报告]
发表于 2014-06-10 12:44 |只看该作者
回复 6# rulebook


    shell 的大括号扩展
参考 bash 4.0 官档 第15页:
http://vdisk.weibo.com/s/mtEZb

论坛徽章:
6
处女座
日期:2014-04-02 16:07:17酉鸡
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龙
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
8 [报告]
发表于 2014-06-10 14:57 |只看该作者
回复 7# 关阴月飞


    谢谢大神,又涨知识了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP