Board logo

标题: [文本处理] [已解决]批处理如何删除该逗号? [打印本页]

作者: KLL    时间: 2010-7-13 14:30     标题: [已解决]批处理如何删除该逗号?

请教一文本数百行如何删除文本内 " 符号之间的逗点
如下
11601,22998,"85,000",17665,24558,12556

使成为

11601,22998,"85000",17665,24558,12556

感谢

[ 本帖最后由 KLL 于 2010-7-19 02:34 编辑 ]
作者: hfg1977    时间: 2010-7-13 19:07

引号是特殊字符,需要一个替换再还原的过程.
下面代码使用前提: a.txt每行只有一对 ""
  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. ::==============================================================
  4. :start
  5. for /f "tokens=1,2,3* usebackq delims=" %%a in ("a.txt") do (
  6. set "fline=%%a"
  7. set "fline=!fline:"=☆!"
  8. for /f "tokens=1,2,3* delims=☆" %%i in ("!fline!") do (
  9. set "a1=%%j"
  10. set "a1=!a1:,=!"
  11. echo %%i"!a1!"%%k>>youfile.txt
  12. )
  13. )
复制代码

作者: CUer    时间: 2010-7-13 20:57

  1. sed "s/\(\"[0-9]\+\),\([0-9]\+\"\)/\1\2/g" 1.txt >2.txt
复制代码

作者: KLL    时间: 2010-7-13 21:40

感谢您的帮助
抱歉是我表达题意未清楚


62206,三阳,"50,642,000”,"2,890”,"375,923,650”,36.15,16.70,16.00,16.55

处理后
62206,三阳,"50642000”,"2890”,"375923650”,36.15,16.70,16.00,16.55

因每行有2或3对 "" 特殊字符

请教该如
作者: hfg1977    时间: 2010-7-14 10:31

  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. ::==============================================================
  4. :start
  5. for /f "tokens=1* usebackq delims=" %%A in ("a.txt") do (
  6. set "aa=%%A"
  7. set "aa=!aa:”="!"
  8. )
  9. for /f "tokens=1-25" %%a in ("%aa%") do echo %%a%%b%%c%%d%%e%%f%%g%%h%%i%%j
  10. for /f "tokens=1-25" %%a in ("!aa!") do echo %%a%%b%%c%%d%%e%%f%%g%%h%%i%%j
复制代码
自己看结果
你的什么文本呀 竟然一半中文引号一半英文 真晕人呀 怀疑手打错误.
sed 对这种不确定情况也不好处理.
作者: KLL    时间: 2010-7-18 11:38

运行后尚无法解决
我将文本上传
作者: terse    时间: 2010-7-18 13:25

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "usebackq delims=" %%a in ("a.txt") do (
  3.     for %%b in (%%a) do (
  4.         for /f "tokens=1* delims=," %%c in ("%%b") do (
  5.             if "%%d" neq "" (
  6.                set str=%%c%%d
  7.                set var=!var!,!str:,=!
  8.             )else set var=!var!,%%c
  9.         )
  10.     )
  11.     echo!var!&set "var="
  12. )                  
  13. pause
复制代码

作者: KLL    时间: 2010-7-19 00:28

完全正确,感谢terse兄指导,
烦请帮忙将屏幕上显示的,生成new.txt
谢谢
作者: terse    时间: 2010-7-19 01:45

原帖由 KLL 于 2010-7-19 00:28 发表
完全正确,感谢terse兄指导,
烦请帮忙将屏幕上显示的,生成new.txt
谢谢
  1. (for /f "usebackq ........
  2. ......
  3. ... echo!var!&set "var="
  4. ))>new.txt
复制代码

作者: KLL    时间: 2010-7-19 02:25     标题: [已解决]批处理如何删除该逗号?

夜里了,
非常感谢terse兄之完整相助.
谢谢
[已解决]
作者: lvsehuaxue    时间: 2011-5-24 19:18

本帖最后由 lvsehuaxue 于 2011-5-24 19:24 编辑

简单些
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3.     for %%i in (%%a) do  set "v=%%i"&set "s=!s!!v:,=!,"
  4.     echo !s:~,-1!&set s=
  5. )
复制代码





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