标题: [文本处理] [已解决]批处理如何提取文本中每行的前两列内容并按指定格式合并 [打印本页]
作者: smallbat 时间: 2014-5-22 21:41 标题: [已解决]批处理如何提取文本中每行的前两列内容并按指定格式合并
本帖最后由 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
谢谢各位!
作者: CrLf 时间: 2014-5-23 00:47
- @(for /f "tokens=1,2" %%a in (a.txt) do @echo %%a:%%b)>b.txt
复制代码
作者: HappyBirthday 时间: 2014-5-23 04:46
notepad++(绝对值得下载使用)
点击 菜单里的 搜索→替换
在“查找模式”里的单选框里选择“正则表达式”
“查找目标”里填^([^\s]+?)\s+(.*?)\s.*$
“替换为”里填“\1\:\2”
随便删除空行
可以先点击“替换”,替换一个或几个看看,如果行得通点击“全部替换”,一次性搞定。
如果是vista以上还可以用powershell(所有程序 附件 里)
powershell -command "& {(get-content “文件名路径(加上双引号)”) -replace '^([^\s]+?)\s+(.*?)\s.*$','$12'}"
作者: smallbat 时间: 2014-5-23 11:57
回复 2# CrLf
你好,可以大致教一下吗?因为平时会经常碰到有规律的txt的替换啊,删除啊什么的!
请问上面的语法 稍微讲解一下好吗?我就学下这个txt的基本东西!有效提高工作效率!
作者: DAIC 时间: 2014-5-23 16:27
回复 4# smallbat
这样有教程:
http://bbs.bathome.net/thread-2189-1-1.html
作者: smallbat 时间: 2014-5-23 22:10
回复 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次!
可以帮我改下吗?
作者: terse 时间: 2014-5-23 22:44
回复 6# smallbat
前面第一个@ 移到这里 @echo %%i
作者: DAIC 时间: 2014-5-25 09:13
回复 6# smallbat
教程里面没有说delims一定要放在tokens前面吧?
微软的文档里面tokens是放在delims前面的,建议你也这样做,以免遇到不必要的问题。
作者: DAIC 时间: 2014-5-25 09:15
回复 6# smallbat
改成这样:- @echo off
- (for /f "delims=@" %%i in (a.txt) do (
- echo %%i
- ))>c.txt
复制代码
作者: smallbat 时间: 2014-5-25 23:44
回复 9# DAIC
我后来依葫芦画瓢这样修改执行下来也可以了!
@(for /f "delims=@ " %%i in (a.txt) do @echo %%i)>b.txt
总的来说,感受到了bat的威力
作者: 飞来石 时间: 2014-5-26 15:05
- @for /f "delims= " %%i in (a.txt) do echo %%i>>b.txt
复制代码
试过,可以用
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |