Board logo

标题: [文本处理] [已解决]批处理删除某字符所在的行 [打印本页]

作者: Rasm    时间: 2011-6-25 18:02     标题: [已解决]批处理删除某字符所在的行

afd
1231231231
asdfaf
123
1
23
1
fafa
afaf
fafaf

我要删除 存在 数字"2" 的那行,利用批处理

我自己的批处理代码是这样写的:
  1. @echo off
  2. for /f "tokens=*" %%a in (input.txt) do @echo %%a|find /v /i "2">>output.txt
  3. pause
复制代码
可惜速度速度太慢,处理500K的文本,需要将近40分钟

CPU达到80%
不知道有没有人能改善下这代码
作者: tmplinshi    时间: 2011-6-25 18:04

  1. findstr /v /c:"2" input.txt >output.txt
复制代码

作者: common    时间: 2011-6-25 18:10

本帖最后由 common 于 2011-6-28 13:24 编辑
  1. @echo off
  2. for /f "tokens=*" %%a in (input.txt) do (
  3.    if "%%a neq *2*" echo %%a>>output.txt
  4. pause
复制代码

作者: Rasm    时间: 2011-6-25 18:27

2# tmplinshi


谢谢!
作者: Rasm    时间: 2011-6-25 18:29

3# common


直接粘贴你的代码,不可用
作者: Batcher    时间: 2011-6-25 18:38

  1. sed "/2/d" a.txt >b.txt
复制代码
  1. gawk "!/2/" a.txt >b.txt
复制代码
http://bbs.bathome.net/thread-1114-1-1.html
作者: Rasm    时间: 2011-6-25 18:41

6# Batcher


你好,我自己写的代码,效果是达到了
但是处理速度太慢了,500K的文本,我机子要花40分钟


我是cpu T6600,GT240的显卡
作者: Batcher    时间: 2011-6-25 18:43

7# Rasm


2楼和6楼的代码分别需要多长时间?
作者: Rasm    时间: 2011-6-25 19:05

8# Batcher


我的代码太落后了

2楼的1秒


够快

6楼的代码未测试

感谢!问题解决了

等下自己再参考下代码参数

在此感谢楼上几位热心帮助的朋友
作者: Rasm    时间: 2011-6-25 19:07

8# Batcher


在此请教一个问题

如果想删除多个字符,该怎么定义呢


如果我想删除存在/xinwen/,/ditu/,/news/等多个所在行的内容
作者: tmplinshi    时间: 2011-6-25 19:31

  1. findstr /v /c:"/xinwen/" /c:"/ditu/" /c:"/news/" input.txt >output.txt
复制代码

作者: Batcher    时间: 2011-6-25 19:40

  1. sed "/xinwen\|ditu\|news/d" a.txt >b.txt
复制代码

作者: Batcher    时间: 2011-6-25 19:42

  1. findstr /v "xinwen ditu news" a.txt >b.txt
复制代码

作者: fly2sky    时间: 2011-7-1 13:03

5# Rasm
common的代码那个左括号是错误的,还少了一个右括号吧
作者: Rasm    时间: 2016-11-20 13:36

回复 13# Batcher


    如果有100个字符要处理,请问该怎么写呢
作者: Rasm    时间: 2017-6-11 11:26

如果有100行的字符要处理,请问该怎么写呢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2