标题: [问题求助] 如何用vbs或者批处理删除指定字符前的行 [打印本页]
作者: zinet 时间: 2013-3-31 22:20 标题: 如何用vbs或者批处理删除指定字符前的行
有a.tx内容如下:
aaaaa ok ""
bbbbb ok system
ccccc ok ok
ddddd ok okok
...................
我想用vbs或者批处理 把他整理成 b.txt 内容如下:
""
system
ok
okok
.....................
即删除第一个ok前(包括第一个ok)所有字符 只保留第一个ok后面的字符
作者: CrLf 时间: 2013-3-31 22:51
- @echo off
- for /f "delims=" %%a in (a.txt) do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- echo;!str:*ok =!
- endlocal
- )
- pause
复制代码
作者: Batcher 时间: 2013-3-31 23:14
- gawk "{n=index($0,\"ok\")+3;print substr($0,n)}" a.txt > b.txt
复制代码
作者: zinet 时间: 2013-4-1 07:53
回复 2# CrLf
嗯:感谢了!!!!!测试成功,但一旦a.txt文件大了,用批处理处理有的费劲,期待vbs能改善速度
作者: zinet 时间: 2013-4-1 07:57
回复 3# Batcher
貌似不怎么成功,处理后的b.txt内容变成:
aaa ok ""
bbb ok system
ccc ok ok
ddd ok okok
还有gawk是第三方工具要下载才行,不过处理速度蛮快的
作者: Batcher 时间: 2013-4-1 10:08
回复 5# zinet
我自己测试的时候没有发现问题。请把你的a.txt压缩一下传上来看看。
作者: apang 时间: 2013-4-1 10:34
- Set fso = CreateObject("Scripting.FileSystemObject")
- text = fso.OpenTextFile("a.txt",1).ReadAll
- With New RegExp
- .Pattern = "(.*?ok )(.*)"
- .IgnoreCase = True
- .Global = True
- text = .Replace(text,"$2")
- End With
- fso.OpenTextFile("b.txt",2,True).Write text
复制代码
作者: zinet 时间: 2013-4-1 12:51
回复 3# Batcher
刚才我重新下载了一个gawk 测试没问题 ,早上测试错误可能是我下错了gawk,在这里我说声抱歉.......谢谢这位大哥
作者: czjt1234 时间: 2013-4-1 14:57
讨厌正则
作者: zinet 时间: 2013-4-1 20:24
回复 7# apang
vbs果然比批处理快多了
作者: BAT-VBS 时间: 2013-4-1 20:31
回复 9# czjt1234
那你将永远学不会数据处理
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |