[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何提取文本中每行的前两列内容并按指定格式合并

本帖最后由 pcl_test 于 2016-10-4 00:04 编辑

222.35.73.93  80  高匿  中国  05月22日  3.43(7票)  3.07  32天
218.4.189.194  3128  高匿  中国  05月22日  3.36(11票)  3.25  5天
61.144.24.106  3128  高匿  中国  05月22日  3.30(33票)  3.30  2天
60.169.11.188  80  高匿  中国  05月22日  3.26(82票)  3.18  36天
221.8.9.6  80  高匿  中国  05月22日  3.25(32票)  3.25  1天
222.169.226.202  80  匿名  中国  05月22日  3.20(25票)  3.31  11天
122.200.82.158  80  高匿  中国  05月22日  3.17(6票)  3.17  5天  

221.204.253.179  3128  高匿  中国  05月22日  3.16(31票)  2.98  21天
     
221.204.246.116  3128  高匿  中国  05月22日  3.14(14票)  3.14  2天
     
218.97.194.94  80  透明  中国  05月22日  3.11(53票)  3.22  41天
     

=====传说中的分割线=====================================
以上是搜索的一些代理ip,放在一个txt里面,要将他改成如下格式:举一个例子,比如下面这个

221.238.193.163  80  高匿  中国  05月08日  3.10(10票)  3.10  16天

改成→

221.238.193.163:80
     

谢谢各位!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @(for /f "tokens=1,2" %%a in (a.txt) do @echo %%a:%%b)>b.txt
复制代码
1

评分人数

TOP

notepad++(绝对值得下载使用)
点击 菜单里的 搜索→替换
在“查找模式”里的单选框里选择“正则表达式”
“查找目标”里填^([^\s]+?)\s+(.*?)\s.*$
“替换为”里填“\1\:\2”
随便删除空行
可以先点击“替换”,替换一个或几个看看,如果行得通点击“全部替换”,一次性搞定。

如果是vista以上还可以用powershell(所有程序 附件 里)
powershell -command "& {(get-content “文件名路径(加上双引号)”) -replace '^([^\s]+?)\s+(.*?)\s.*$','$12'}"

TOP

回复 2# CrLf


    你好,可以大致教一下吗?因为平时会经常碰到有规律的txt的替换啊,删除啊什么的!

请问上面的语法 稍微讲解一下好吗?我就学下这个txt的基本东西!有效提高工作效率!

TOP

回复 4# smallbat


这样有教程:
http://bbs.bathome.net/thread-2189-1-1.html

TOP

回复 5# DAIC


    我刚刚看了教程

说分割取节,要先delims定义然后再用tokens啊

比如以下规则的ip地址

223.4.168.234:3128@HTTP#浙江省杭州市:阿里巴巴网络有限公司
223.197.55.82:8080@HTTP#香港:电讯盈科有限公司
223.197.55.83:8080@HTTP#香港:电讯盈科有限公司

我要取的@之前的
我就这样尝试依葫芦画瓢的写了一个

@(for /f "delims=@ " %%i in (a.txt) do echo %%i)>c.txt

但是运行下来变成这样的
C:\Users\aabbcc\Desktop\ip>echo 223.4.168.234:3128
223.4.168.234:3128

把路径显示出来了,而且ip出现了2次!

可以帮我改下吗?

TOP

回复 6# smallbat
前面第一个@  移到这里 @echo %%i

TOP

回复 6# smallbat


教程里面没有说delims一定要放在tokens前面吧?
微软的文档里面tokens是放在delims前面的,建议你也这样做,以免遇到不必要的问题。

TOP

回复 6# smallbat


改成这样:
  1. @echo off
  2. (for /f "delims=@" %%i in (a.txt) do (
  3.     echo %%i
  4. ))>c.txt
复制代码
1

评分人数

TOP

回复 9# DAIC

我后来依葫芦画瓢这样修改执行下来也可以了!
    @(for /f "delims=@ " %%i in (a.txt) do @echo %%i)>b.txt

总的来说,感受到了bat的威力

TOP

  1. @for /f "delims= " %%i in (a.txt) do echo %%i>>b.txt
复制代码
试过,可以用

TOP

返回列表