标题: [文本处理] 求批处理提取特殊字符之间的内容 [打印本页]
作者: mokii 时间: 2015-8-7 19:50 标题: 求批处理提取特殊字符之间的内容
想提取如下文件里 "server" 行里面的网址到一个txt文件:
请问如何写呢?谢谢- {
- "server":"ww3t.h34xg.com",
- "server_port":"56631",
- "local_port":"757",
- "mode":"aes",
- "link":"ww3t.h34xg.com",
- },
- {
- "server":"d22t.hxer4g.org",
- "server_port":"56631",
- "local_port":"757",
- "mode":"aes",
- "link":"d22t.hxer4g.org",
- },
- {
- "server":"25-6.hxjhg.cn",
- "server_port":"56631",
- "local_port":"757",
- "mode":"aes",
- "link":"25-6.hxjhg.cn",
- },
- {
- "server":"cnc.hyyxg.net.cn",
- "server_port":"56631",
- "local_port":"757",
- "mode":"aes",
- "link":"cnc.hyyxg.net.cn",
- },
复制代码
结果像这样:- ww3t.h34xg.com
- d22t.hxer4g.org
- 25-6.hxjhg.cn
- cnc.hyyxg.net.cn
复制代码
作者: pcl_test 时间: 2015-8-7 20:39
本帖最后由 pcl_test 于 2015-8-8 12:21 编辑
- ::先下载http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe
- >"2.txt" grep -oP "(?<=server\":\")[^\"]+" "1.txt"
复制代码
作者: pcl_test 时间: 2015-8-7 20:49
- @(for /f tokens^=4^ delims^=^" %%a in ('findstr "server\":\"[^\"]*\"" "1.txt"') do @echo;%%a)>"2.txt"
复制代码
作者: mokii 时间: 2015-8-8 11:07
回复 3# pcl_test
感谢!
作者: mokii 时间: 2015-8-8 11:42
回复 3# pcl_test
执行脚本以后,发现有一些行没有提取到,因为里面随机包含了一些空格,类似这样:- {
- "server" : "25-6.hxjhg.cn",
- "server_port" : "56631",
- "local_port" : "757",
- "mode" : "aes",
- "link" : "25-6.hxjhg.cn",
- {
复制代码
请问这种情况如何破?
作者: pcl_test 时间: 2015-8-8 12:36
回复 5# mokii - @if(0)==(0) echo off&cscript -nologo -e:jscript "%~0"<"1.txt" >"2.txt"& pause & exit @end
- var arr = WScript.StdIn.Readall().match(/server"\s*:\s*"[^"]+"/g);
- for (var i=0;i<arr.length;i++){WSH.Echo(arr[i].replace(/server"\s*:\s*"([^"]+)"/,'$1'));}
复制代码
作者: mokii 时间: 2015-8-8 13:54
回复 6# pcl_test
好厉害!完全看不懂
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |