Board logo

标题: [文本处理] 【集思】批处理去除文本中每行末尾的空格 [打印本页]

作者: defanive    时间: 2011-8-20 04:00     标题: 【集思】批处理去除文本中每行末尾的空格

来自群里,感觉是个很不错的问题
作者: defanive    时间: 2011-8-20 04:01

本帖最后由 defanive 于 2011-8-20 04:02 编辑

  1. @echo off
  2. cls 1>nul 3>>b.txt
  3. for /f "delims=" %%a in (a.txt) do call :a ^^%%a
  4. goto :eof
  5. :a
  6. echo\%*
复制代码
如果不考虑特殊字符的话,这个方法应该不错
作者: CUer    时间: 2011-8-20 10:36

  1. sed "s/ *$//" a.txt >b.txt
复制代码
  1. gawk "gsub(/ *$/,\"\")" a.txt >b.txt
复制代码
  1. perl -pe "s/ *$//" a.txt >b.txt
复制代码

作者: batman    时间: 2011-8-20 11:32

这个问题原来讨论过吧?
  1. @echo off
  2. rem 加上#字符是为了标示行尾
  3. for /f "delims=" %%a in (a.txt) do echo %%~na#
  4. pause>nul
复制代码

作者: defanive    时间: 2011-8-20 14:39

回复 4# batman


    如果文本中有一行C:\a.txt就不行了吧
作者: CrLf    时间: 2011-8-20 14:50

回复 5# defanive


    把 \ 替换掉就行了呗
作者: CrLf    时间: 2011-8-20 15:00

  1. @echo off
  2. for /f "delims=" %%a in (1.txt) do (
  3.    set str=%%a
  4.    setlocal enabledelayedexpansion
  5.    for /f "delims=" %%b in ("!str:\=\!") do (
  6.       endlocal
  7.       set str=%%~nxb
  8.    )
  9.    setlocal enabledelayedexpansion
  10.    echo !str:\=\!
  11.    endlocal
  12. )
复制代码

作者: defanive    时间: 2011-8-20 15:05

回复 7# CrLf


    貌似测试C:\a.txt会把C:吃掉。。。而且这样搞效率感觉会比不上2L的样子
作者: Hello123World    时间: 2011-8-20 15:10

完成4楼的
  1. @echo off
  2. rem 加上#字符是为了标示行尾
  3. (for /f "delims=" %%a in (a.txt) do echo %%~na#)>1.txt
  4. (For /f "delims=#" %%i in (1.txt) do echo %%i)>b.txt
  5. pause>nul
复制代码

作者: CrLf    时间: 2011-8-20 15:13

回复 8# defanive


    哦,那就再替换掉 : 即可。效率方面,call 远低于 for、setlocal、set、echo等普通命令
  1. @echo off
  2. for /f "delims=" %%a in (1.txt) do (
  3.    set str=%%a
  4.    setlocal enabledelayedexpansion
  5.    set str=!str::=:!
  6.    for /f "delims=" %%b in ("!str:\=\!") do (
  7.       endlocal
  8.       set str=%%~nxb
  9.    )
  10.    setlocal enabledelayedexpansion
  11.    set str=!str::=:!
  12.    echo !str:\=\!
  13.    endlocal
  14. )
  15. pause
复制代码

作者: Hello123World    时间: 2011-8-20 15:13

回复 2# defanive


    能讲下为什么要两次转义^^%%a吗?
作者: Hello123World    时间: 2011-8-20 15:33

回复 12# else


    原来如此!soga




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