Board logo

标题: [文本处理] [已解决]批处理tokens怎样多次提取? [打印本页]

作者: super1129    时间: 2011-9-17 09:22     标题: [已解决]批处理tokens怎样多次提取?

有个txt文本文件,里面内容为
62.244.13.82:3128@HTTP#[C]乌克兰 Simferopol State University
62.244.13.110:3128@HTTP#[C]乌克兰 Simferopol State University
62.244.13.110:58@HTTP#[C]乌克兰 Simferopol State University
………………

我想通过批处理或者VBS之类的达到如下效果,希望变成这样:
62.244.13.0 62.244.13.255 3128
62.244.13.0 62.244.13.255 3128
62.244.13.0 62.244.13.255 58
…………

最好能够去除重复行,达到这样:
62.244.13.0 62.244.13.255 3128
62.244.13.0 62.244.13.255 58
…………


O(∩_∩)O谢谢



我自己编的,速度好慢,大家有更好的方法吗?
作者: Batcher    时间: 2011-9-17 09:44

看教程:
http://bbs.bathome.net/thread-2189-1-1.html
作者: wc726842270    时间: 2011-9-17 09:56

是否想过用一个FOR来搞定啊。为什么DELIMS每次仅指定一个分隔符
作者: super1129    时间: 2011-9-17 10:00

是否想过用一个FOR来搞定啊。为什么DELIMS每次仅指定一个分隔符
wc726842270 发表于 2011-9-17 09:56



    请指教啊,我是新手,只会一个个弄,难怪速度好慢。
作者: super1129    时间: 2011-9-17 10:03

是否想过用一个FOR来搞定啊。为什么DELIMS每次仅指定一个分隔符
wc726842270 发表于 2011-9-17 09:56



    谢谢指点,原来DELIMS可以指定多个分隔符,搞定了,非常感谢啊,看来以后要好好学了
作者: super1129    时间: 2011-9-17 21:11

本帖最后由 super1129 于 2011-9-17 21:14 编辑
看教程:
Batcher 发表于 2011-9-17 09:44



    请问管理员:如何对提取得到的%%c进行运算呢?
比如62.244.13.82:3128@HTTP#[C]乌克兰 Simferopol State University
我想得到62.244.8.0 62.244.18.255 3128
其中 8=13-5,18=13+5.
就是要对%%c进行加减后赋值,但是试了好久都提示错误,如何才是正确的赋值呢?以下是62.244.13.0 62.244.13.255 3128  的代码。
  1. @echo off
  2. echo 正在处理,请等待。。。。。。
  3. for /f "delims=.:@  tokens=1-5" %%a in ('type ip.txt') do echo %%a.%%b.%%c.0 %%a.%%b.%%c.255 %%e>>tmp.txt
  4. )
  5. (for /f "delims=" %%i in (tmp.txt) do (
  6.    if not defined "%%i" echo %%i&set ""%%i"=i"
  7. ))>IPrangge+port.txt
  8. del /q tmp.txt
  9. exit
复制代码

作者: awk    时间: 2011-9-18 21:22

  1. gawk -F "[.:@]+" "{print $1\".\"$2\".\"$3\".\"0,$1\".\"$2\".\"$3\".\"255,$5}" a.txt
复制代码

作者: awk    时间: 2011-9-18 21:25

去重复:
  1. gawk -F "[.:@]+" "{if(!a[$1 $2 $3 $5]++)print $1\".\"$2\".\"$3\".\"0,$1\".\"$2\".\"$3\".\"255,$5}" a.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2