Board logo

标题: [文本处理] [已解决]批处理如何删除文本里字符串与逗号间的空格? [打印本页]

作者: xparlyn    时间: 2009-12-17 23:18     标题: [已解决]批处理如何删除文本里字符串与逗号间的空格?

比如说我有一个文本文件,里面的内容如下:
abc def ghi          ,ghig def ate    ,fdsfdsifsdsa
gad  eft adfsd      ,     dsa   fdsa   ,    fdjoyolkok     ,ffdsafdsl

我想删除字符串与逗号间的空格得到如下结果:
abc def ghi,ghig def ate,fdsfdsifsdsa
gad  eft adfsd,     dsa   fdsa,    fdjoyolko,ffdsafdsl

注:字符串内的空格不删除,字符串与逗号间有多少空格不定,每行有多少个逗号也不定

另注:我不想用其它工具,只想用Windows内部命令来实现

[ 本帖最后由 xparlyn 于 2009-12-18 22:24 编辑 ]
作者: asnahu    时间: 2009-12-17 23:26

先在本论坛搜索SED,下载,放到c:\windows\,使用以下代码:

  1. @echo off
  2. sed "s/\s*,/,/g" test.txt
  3. pause>nul
复制代码

作者: xparlyn    时间: 2009-12-17 23:29     标题: 回复 2楼 的帖子

我不想用其它工具,只想用Windows内部命令来实现

[ 本帖最后由 xparlyn 于 2009-12-17 23:42 编辑 ]
作者: zqz0012005    时间: 2009-12-18 00:41

  1. mshta "javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('2.txt',2,true).Write(fso.OpenTextFile('1.txt').ReadAll().replace(/\s*,\s*/g,','));"
复制代码

作者: asnahu    时间: 2009-12-18 07:25

  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. Set objFile = objFSO.OpenTextFile("test.txt", 1)
  3. colLines = objFile.ReadAll
  4. objFile.Close
  5. Set objRegEx = CreateObject("VBScript.RegExp")
  6. objRegEx.Global = True
  7. objRegEx.IgnoreCase = True
  8. objRegEx.Pattern = "\s*,"
  9. colLines = objRegEx.Replace(colLines, ",")
  10. Set objFile = objFSO.OpenTextFile("test.txt", 2)
  11. objFile.Write colLines
  12. objFile.Close
  13. Set   objFSO = Nothing
  14. Set objRegEx = Nothing
复制代码

作者: xparlyn    时间: 2009-12-18 22:24

  1. @echo off&setlocal enabledelayedexpansion
  2. :hanye
  3. set n=0&set a=a.txt
  4. for /f "delims=" %%i in ('Findstr /n ".*" %a%') do (set i=%%i
  5. set i=!i:*:=!
  6. echo !i: ,=,!)>>gu.xing
  7. del /q %a%
  8. ren gu.xing %a%
  9. Findstr /c:" ," %a% >nul&&set n=1
  10. if %n% == 1 (goto hanye) else echo 操作完成!&pause
复制代码
这是在别处找到的,这才是我想要的,不过还是谢谢各位了
作者: Batcher    时间: 2009-12-18 22:28     标题: 回复 6楼 的帖子

CN-DOS找来的吧?
为什么4楼的不是你想要的呢?哪里不满足要求呢?
作者: xparlyn    时间: 2009-12-18 22:33

用到javascript,这点不是我想要的
作者: xparlyn    时间: 2009-12-18 22:37

不过我找到的那个方法在处理大文件的时候效率很慢,这点不爽
文件里有1万多的空格的话就慢的要死了...
作者: Batcher    时间: 2009-12-18 23:06     标题: 回复 8楼 的帖子

但它还是批处理啊,效率又高,还不需要临时文件,何乐而不为呢?
作者: lvsehuaxue    时间: 2011-5-13 13:36

我的效率不知道怎么样?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.      set "v=%%i"
  4.      for /l %%i in (1 1 80) do (
  5.        set "v=!v: ,=,!"
  6.     )
  7.     echo !v!
  8. )
复制代码

作者: applba    时间: 2011-5-13 16:34

vbs是个好东西。

逐行扫描,然后字符串替换

!a: ,=,!

就是不知道的逗号之前有多少个空格……




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