标题: [文本处理] [已解决]批处理如何从以下格式文件得到指定的格式? [打印本页]
作者: llsilver 时间: 2012-6-13 20:29 标题: [已解决]批处理如何从以下格式文件得到指定的格式?
是处理url用的,大概有400万行,原本想用excel筛选功能,手动处理,累一点就累一点吧,结果excel不支持这么多行,我晕。
需要处理的格式如下:- http://www.baidu.com/957
- http://www.baidu.com/4759
- http://www.baidu.com/?page=14
- http://www.baidu.com/archive/123
- http://www.baidu.com/archive/asd
- http://www.baidu.com/category/232
- http://www.baidu.com/category/lalala
- http://www.baidu.com/entry/1223
- http://www.baidu.com/entry/aaa
- http://www.baidu.com/unknow-----------------------(这里的unknown表示无特征英文字母)
- http://www.baidu.com/111%3Fxxx
复制代码
想要用批处理,有3种需求:
需求1:只保留这样的url- http://www.baidu.com/957
- http://www.baidu.com/4759
复制代码
需求2:只保留这样的URL- http://www.baidu.com/archive/123
- http://www.baidu.com/archive/asd
复制代码
需求3:只保留这样的URL- http://www.baidu.com/category/232
- http://www.baidu.com/category/lalala
复制代码
需求2、3估计很好实现,最重要的是需求1。。。
不管结果如何,先谢过所有看过此贴的朋友。
作者: CrLf 时间: 2012-6-13 20:40
本帖最后由 CrLf 于 2012-6-13 21:25 编辑
- @echo off
- findstr /x "http://[^/]*/[0-9]*" url.txt>1.txt
- findstr /x "http://[^/]*/archive/.*" url.txt>2.txt
- findstr /x "http://[^/]*/category/.*" url.txt>3.txt
复制代码
作者: llsilver 时间: 2012-6-13 21:21
回复 2# CrLf
谢谢斑斑,如果网址不是只有baidu.com
如果还有21.cn
google.com.hk
cctv.cn
sina.com.cn
这样的呢,又该如何写?
呵呵,得寸进尺了
作者: CrLf 时间: 2012-6-13 21:24
回复 3# llsilver
代码已修改,建议以后在顶楼将要求一次性说清,避免绕弯子。
作者: llsilver 时间: 2012-6-13 21:43
回复 4# CrLf
谢谢斑斑,下次一定注意
作者: poter 时间: 2012-6-14 19:18
我觉得自己挺有创造性的,这样都可以泡制出来
@echo off
setlocal enableDelayedExpansion
for /f "tokens=*" %%i in ('findstr /v "page" url.txt') do (
set a=%%i&set "a=!a:/= !"
for %%j in (!a!) do (
if "%%j"=="archive" echo %%i>>2.txt
if "%%j"=="category" echo %%i>>3.txt
set /a b=%%j+0 2>nul
if "!b!" gtr "0" echo %%i>>1.txt
)
)
作者: poter 时间: 2012-6-14 19:25
回复 2# CrLf
大侠,[^/]代表是什么? 我看了cmd里的解释,什么补字符集,理解起来很头痛啊,有没有通俗易懂的说法?
作者: CrLf 时间: 2012-6-14 20:11
回复 7# poter
见:http://bbs.bathome.net/viewthread.php?tid=14682
假如将数字看作字符集下的一个集合,那么数字集的补集就是所有非数字字符,findstr 中的 [0-9] 匹配的是一个阿拉伯数字,比如 0,那么 [^0-9] 的意思(前者的补集)就是一个不是阿拉伯数字的字符,比如 b
作者: poter 时间: 2012-6-14 20:42
回复 8# CrLf
原来是这样,那儿[^/]就代表所有非特殊符号的集合咯?
十分感谢!!
作者: CrLf 时间: 2012-6-14 20:45
回复 9# poter
[^/] 代表除 / 之外的所有字符,因为 url 以 / 分节,所以 [^/]* 能够匹配一整节的内容
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |