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

[问题求助] 如何用vbs或者批处理删除指定字符前的行

[复制链接]
发表于 2013-3-31 22:20:45 | 显示全部楼层 |阅读模式
有a.tx内容如下:

aaaaa ok ""
bbbbb ok system
ccccc ok ok
ddddd ok okok

...................

我想用vbs或者批处理 把他整理成 b.txt 内容如下:

""
system
ok
okok

.....................

即删除第一个ok前(包括第一个ok)所有字符 只保留第一个ok后面的字符
发表于 2013-3-31 22:51:02 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.    set "str=%%a"
  4.    setlocal enabledelayedexpansion
  5.    echo;!str:*ok =!
  6.    endlocal
  7. )
  8. pause
复制代码
发表于 2013-3-31 23:14:43 | 显示全部楼层
  1. gawk "{n=index($0,"ok")+3;print substr($0,n)}" a.txt > b.txt
复制代码
 楼主| 发表于 2013-4-1 07:53:13 | 显示全部楼层
回复 2# CrLf


    嗯:感谢了!!!!!测试成功,但一旦a.txt文件大了,用批处理处理有的费劲,期待vbs能改善速度
 楼主| 发表于 2013-4-1 07:57:20 | 显示全部楼层
回复 3# Batcher


貌似不怎么成功,处理后的b.txt内容变成:
aaa ok ""
bbb ok system
ccc ok ok
ddd ok okok

还有gawk是第三方工具要下载才行,不过处理速度蛮快的
发表于 2013-4-1 10:08:39 | 显示全部楼层
回复 5# zinet


    我自己测试的时候没有发现问题。请把你的a.txt压缩一下传上来看看。
发表于 2013-4-1 10:34:30 | 显示全部楼层
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. text = fso.OpenTextFile("a.txt",1).ReadAll
  3. With New RegExp
  4.    .Pattern = "(.*?ok )(.*)"
  5.    .IgnoreCase = True
  6.    .Global = True
  7.    text = .Replace(text,"$2")
  8. End With
  9. fso.OpenTextFile("b.txt",2,True).Write text
复制代码
 楼主| 发表于 2013-4-1 12:51:18 | 显示全部楼层
回复 3# Batcher


   刚才我重新下载了一个gawk  测试没问题 ,早上测试错误可能是我下错了gawk,在这里我说声抱歉.......谢谢这位大哥
发表于 2013-4-1 14:57:53 | 显示全部楼层
讨厌正则
 楼主| 发表于 2013-4-1 20:24:38 | 显示全部楼层
回复 7# apang


    vbs果然比批处理快多了
发表于 2013-4-1 20:31:31 | 显示全部楼层
回复 9# czjt1234


    那你将永远学不会数据处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 13:35 , Processed in 0.020235 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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