免费注册 查看新帖 |

Chinaunix

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

[文件目录] 脚本能实现显示树型结构吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-07 17:31 |只看该作者 |倒序浏览

源文件a.cfg,记录的是父节点和子节点的关系(左边为父节点):
100-101
101-102
100-103
103-104
105-106
107

希望这样显示(类似在windows的cmd窗口用tree显示目录结构):

├─100
│  ├─101
│  │  └─102
│  └─103
│      └─104
├─105
│  └─106
└─107

论坛徽章:
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
2 [报告]
发表于 2013-08-07 17:46 |只看该作者
linux下生成树状目录,也是用 tree 命令

论坛徽章:
0
3 [报告]
发表于 2013-08-07 17:52 |只看该作者
关阴月飞 发表于 2013-08-07 17:46
linux下生成树状目录,也是用 tree 命令


是想根据配置文件,打印出树型结构,不是现有目录。
这只是给了一个例子,实际的节点命名比这个要复杂,不便建目录再用tree打印,但节点之间存在树型关系。

论坛徽章:
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
4 [报告]
发表于 2013-08-07 17:57 |只看该作者
回复 3# ljt2k


根据文件画出那个树图,这个比较蛋疼


   

论坛徽章:
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 [报告]
发表于 2013-08-07 19:06 |只看该作者
本帖最后由 rdcwayx 于 2013-08-07 21:09 编辑

给个接近的:
  1. awk -F - 'NF==1{a[$1]=$1}
  2. NF==2{if (a[$1]=="")a[$1]=$1;a[$2]=a[$1] FS $2}
  3. END{for (i in a) print a[i]}' infile|sort

  4. 100
  5. 100-101
  6. 100-101-102
  7. 100-103
  8. 100-103-104
  9. 105
  10. 105-106
  11. 107
复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
6 [报告]
发表于 2013-08-07 19:42 |只看该作者
@rdcwayx学习,但好像有问题。
  1. $ cat file1
  2. 101-102
  3. 100-103
  4. 103-104
  5. 105-106
  6. 107
  7. 100-101
  8. $ awk -F - 'NF==1{a[$1]=$1}NF==2{if(a[$1]=="")a[$1]=$1;a[$2]=a[$1] FS $2}END{for(i in a)print  a[i]}' file1 |sort

  9. 100
  10. 100-101
  11. 100-103
  12. 100-103-104
  13. 101-102     
  14. 105
  15. 105-106
  16. 107
复制代码

论坛徽章:
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
7 [报告]
发表于 2013-08-07 19:49 |只看该作者
  1. sort infile |awk -F - 'NF==1{a[$1]=$1}NF==2{if(a[$1]=="")a[$1]=$1;a[$2]=a[$1] FS $2}END{for(i in a)print  a[i]}' |sort
复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
8 [报告]
发表于 2013-08-07 20:02 |只看该作者
@rdcwayx
不是长久之计
100-103
101-102
103-104
105-100
107
100-101

如果是这样的文本呢?

论坛徽章:
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
9 [报告]
发表于 2013-08-07 20:14 |只看该作者
先等等楼主的确认吧。

论坛徽章:
0
10 [报告]
发表于 2013-08-07 22:54 |只看该作者
回复 8# cao627


不用考虑这种情况,这样已经不是树结构了。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP