标题: [文本处理] [已解决]批处理如何删除文本里字符串与逗号间的空格? [打印本页]
作者: 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\,使用以下代码:
- @echo off
- sed "s/\s*,/,/g" test.txt
- pause>nul
复制代码
作者: xparlyn 时间: 2009-12-17 23:29 标题: 回复 2楼 的帖子
我不想用其它工具,只想用Windows内部命令来实现
[ 本帖最后由 xparlyn 于 2009-12-17 23:42 编辑 ]
作者: zqz0012005 时间: 2009-12-18 00:41
- 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
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set objFile = objFSO.OpenTextFile("test.txt", 1)
- colLines = objFile.ReadAll
- objFile.Close
-
- Set objRegEx = CreateObject("VBScript.RegExp")
- objRegEx.Global = True
- objRegEx.IgnoreCase = True
- objRegEx.Pattern = "\s*,"
-
- colLines = objRegEx.Replace(colLines, ",")
-
- Set objFile = objFSO.OpenTextFile("test.txt", 2)
- objFile.Write colLines
- objFile.Close
-
- Set objFSO = Nothing
- Set objRegEx = Nothing
复制代码
作者: xparlyn 时间: 2009-12-18 22:24
- @echo off&setlocal enabledelayedexpansion
- :hanye
- set n=0&set a=a.txt
- for /f "delims=" %%i in ('Findstr /n ".*" %a%') do (set i=%%i
- set i=!i:*:=!
- echo !i: ,=,!)>>gu.xing
- del /q %a%
- ren gu.xing %a%
- Findstr /c:" ," %a% >nul&&set n=1
- 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
我的效率不知道怎么样?- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- set "v=%%i"
- for /l %%i in (1 1 80) do (
- set "v=!v: ,=,!"
- )
- echo !v!
- )
-
复制代码
作者: applba 时间: 2011-5-13 16:34
vbs是个好东西。
逐行扫描,然后字符串替换
!a: ,=,!
就是不知道的逗号之前有多少个空格……
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |