忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 625 | 回复: 13

[文件目录] 循环多次读取到文件后的输出格式 [复制链接]

论坛徽章:
0
发表于 2017-11-10 14:53 |显示全部楼层
我有个3层结构的目录, 例子如下 aaa/aa1/a1.file   aaa/aa2/a2.file bbb/bb/b.file,2级目录数量未知,文件数量和文件内容也未知
我现在有个嵌套循环三次读取到文件,然后做格式化输出结果如下
dir1:aaa,dir2:aa1,file:i'm a1
file:i'm a1 too
dir2:aa2,file:i'm a2
dir1:bbb,dir2:bb,file:i'm b
我如何使结果变成
dir1:aaa,dir2:aa1,file:i'm a1
dir1:aaa,dir2:aa1,file:i'm a1 too
dir1:aaa,dir2:aa2,file:i'm a2
dir1:bbb,dir2:bb,file:i'm b

论坛徽章:
120
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-11-10 15:03 |显示全部楼层
回复 1# wjw870907

$ awk -F, -vOFS=, '/^dir/{print;--NF;dir=$0}/^file/{print dir,$0}' FILE
dir1:aaa,dir2:aa1,file:i'm a1
dir1:aaa,dir2:aa1,file:i'm a1 too
dir2:aa2,file:i'm a2
dir1:bbb,dir2:bb,file:i'm b

$ cat FILE
dir1:aaa,dir2:aa1,file:i'm a1
file:i'm a1 too
dir2:aa2,file:i'm a2
dir1:bbb,dir2:bb,file:i'm b

论坛徽章:
0
发表于 2017-11-10 15:07 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-11-10 15:16 编辑

我的理解:

建立个csv。
第一层目录,第二层目录,第三层目录(或者没有这个字段),文件名,文件内容
aaa,aaa1,bbb1,file1,11111
aaa,aaa1,bbb1,file2,111112




用powershell生成这个很容易。
$所有aaa下的第一层目录 = dir aaa -Depth 1 -Directory
然后foreach。


---------------------------------------
另一种方法:

  1. <p><p>$文件 = dir a:\pscode\0\abcd\20171109.txt
  2. $父目录 = Split-Path $文件
  3. $爷目录 = Split-Path $父目录
  4. $祖爷目录 = Split-Path $爷目录
  5. #-------------
  6. $父目录
  7. $爷目录
  8. $祖爷目录</p>
复制代码


返回:
A:\pscode\0\abcd
A:\pscode\0
A:\pscode

论坛徽章:
0
发表于 2017-11-10 15:15 |显示全部楼层
第三行没有dir1,而且我文件里面内容最后不一定是file开头的呢

论坛徽章:
0
发表于 2017-11-10 15:16 |显示全部楼层
回复 2# jason680

谢谢,不过 第三行没有dir1,而且我文件里面内容最后不一定是file开头的呢

论坛徽章:
120
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-11-10 15:19 |显示全部楼层
回复 5# wjw870907

$ awk -F, -vOFS=, 'NF==3{d1=$1;d2=$2;print;next}NF==2{d2=$1;print d1,$0;next}{print d1,d2,$0}' FILE
dir1:aaa,dir2:aa1,file:i'm a1
dir1:aaa,dir2:aa1,file:i'm a1 too
dir1:aaa,dir2:aa2,file:i'm a2
dir1:bbb,dir2:bb,file:i'm b

论坛徽章:
0
发表于 2017-11-10 15:32 |显示全部楼层
回复 6# jason680

谢谢大神,如果有4列呢

论坛徽章:
120
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-11-10 15:33 |显示全部楼层
回复 7# wjw870907

>> 我有个3层结构的目录....

论坛徽章:
0
发表于 2017-11-10 15:39 |显示全部楼层
回复 8# jason680

我表达有问题,目录结构是三成,但是字段会有四层祖父目录/父目录/子目录/文件
但是结果要祖父目录,父目录,子目录,文件名,文件内容

论坛徽章:
120
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-11-10 15:41 |显示全部楼层
回复 9# wjw870907

for your question
1. input data/file
2. procedure rule
3. ouput data/file
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP