免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: a12333a
打印 上一主题 下一主题

[文本处理] 这个需求问了2个linux高级群,至今没有一个好的算法出现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-29 00:11 |显示全部楼层 |倒序浏览
本帖最后由 a12333a 于 2015-01-29 00:15 编辑

需求如下:
一个文本a.txt里面包含某个网站下的文件和文件夹的绝对路径URL(百万行),文件夹没有以 / 结尾,现在要得出文件列表(无排序要求),也就是把目录过滤掉;
如:
cat a.txt
/a
/a/b/e.jpg/a/b/e
/a/b/c
/a/b/1.jpg
/a/b/c/d/e.jpg
/a/b/c/f
/a/b/c/d

其中加粗部分是被其他URL‘包含’的,当成目录需要被过滤掉;得出的结果应该是:
/a/b/e.jpg
/a/b/1.jpg
/a/b/c/d/e.jpg
/a/b/c/f
/a/b/e

注意
/a/b/e
没有被
/a/b/e.jpg’包含‘ 是2个文件;
头脑风暴,来吧~~



论坛徽章:
0
2 [报告]
发表于 2015-01-29 11:19 |显示全部楼层
Shell_HAT 发表于 2015-01-29 08:20
/a/b/e.jpg/a/b/e
这一行的处理没有看明白你的需求
你怎么知道这里的 e.jpg 是文件?文件夹的名字也可以叫 ...
因为在这个文件列表中,我们没有找到/a/b/e.jpg/xxxx  可以使得/a/b/e.jpg 被判断为一个目录,所以结果要判断他是一个文件

论坛徽章:
0
3 [报告]
发表于 2015-01-29 11:22 |显示全部楼层
dn833 发表于 2015-01-29 09:05
至今没有好答案的原因是至今需求没明确
一个文本a.txt里面包含某个网站下的文件和文件夹的绝对路径URL(百万行),文件夹没有以 / 结尾,现在要得出文件列表(无排序要求) 这个需求很明确了。
文件夹没有以 / 结尾,所以只能根据其他URL来判断当前URL是目录还是文件
比如/a/b/c 相比/ab/c/d
那么/a/b/c就一定是目录,需要过滤掉。

论坛徽章:
0
4 [报告]
发表于 2015-01-29 11:23 |显示全部楼层
jason680 发表于 2015-01-29 00:42
回复 1# a12333a

$ awk -F'/' 'FNR==NR{d="";for(n=2;n
看这写法很牛逼,我先测试下能不能实现

论坛徽章:
0
5 [报告]
发表于 2015-01-29 11:58 |显示全部楼层
jason680 发表于 2015-01-29 00:42
回复 1# a12333a

$ awk -F'/' 'FNR==NR{d="";for(n=2;n<NF;n++){d=d"/"$n;a[d]=1};next}!a[$0]' a.txt a.txt





好屌,可用!!

论坛徽章:
0
6 [报告]
发表于 2015-01-29 12:45 |显示全部楼层
本帖最后由 a12333a 于 2015-01-29 12:46 编辑
blackold 发表于 2015-01-29 12:30
问题没有描述清楚。

意思应该是求"最长字符串"。


描述很清楚了,你可以当成文本内容是网站的目录、文件列表,现在只要筛选出文件列表,去掉目录。但是提供的文本里面目录并没有与/结尾。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP