找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 37364|回复: 10

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

[复制链接]
发表于 2014-5-22 21:41:48 | 显示全部楼层 |阅读模式
本帖最后由 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
     

谢谢各位!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-5-23 00:47:05 | 显示全部楼层
  1. @(for /f "tokens=1,2" %%a in (a.txt) do @echo %%a:%%b)>b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

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

如果是vista以上还可以用powershell(所有程序 附件 里)
powershell -command "& {(get-content “文件名路径(加上双引号)”) -replace '^([^\s]+?)\s+(.*?)\s.*$','$12'}"
 楼主| 发表于 2014-5-23 11:57:50 | 显示全部楼层
回复 2# CrLf


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

请问上面的语法 稍微讲解一下好吗?我就学下这个txt的基本东西!有效提高工作效率!
发表于 2014-5-23 16:27:54 | 显示全部楼层
回复 4# smallbat


这样有教程:
http://bbs.bathome.net/thread-2189-1-1.html
 楼主| 发表于 2014-5-23 22:10:11 | 显示全部楼层
回复 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次!

可以帮我改下吗?
发表于 2014-5-23 22:44:29 | 显示全部楼层
回复 6# smallbat
前面第一个@  移到这里 @echo %%i
发表于 2014-5-25 09:13:27 | 显示全部楼层
回复 6# smallbat


教程里面没有说delims一定要放在tokens前面吧?
微软的文档里面tokens是放在delims前面的,建议你也这样做,以免遇到不必要的问题。
发表于 2014-5-25 09:15:40 | 显示全部楼层
回复 6# smallbat


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

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-5-25 23:44:05 | 显示全部楼层
回复 9# DAIC

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

总的来说,感受到了bat的威力
发表于 2014-5-26 15:05:16 | 显示全部楼层
  1. @for /f "delims= " %%i in (a.txt) do echo %%i>>b.txt
复制代码
试过,可以用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:07 , Processed in 0.033495 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表