Board logo

标题: [文本处理] [已解决]批处理--文本多行合并 [打印本页]

作者: hlzj88    时间: 2015-11-20 17:04     标题: [已解决]批处理--文本多行合并

本帖最后由 hlzj88 于 2015-11-21 13:04 编辑

现有文本若干,大小不一。特点如下
(4个空格)第一行
第二行
第三行
(以此类推)

想得到的结果是 :有空格就作为每行的开端,没空格的行全部合并到前面。
想过,不会做。求助!!
作者: 依山居    时间: 2015-11-20 18:30

自己找sed awk 和正则表达式的教程自己学去。
作者: hlzj88    时间: 2015-11-21 10:27

求人不如求己,换个思路,轻松搞定。
  1. @echo off
  2. del /q 1.html>nul 2>nul
  3. setlocal EnableDelayedExpansion
  4. echo 批量文本整理    (思路:利用网页代码自动合并然后提取)
  5. echo 因为是把行首无空格的追到有空格的行,因此最好是保证文本内容正确,特别是废文要处理好。
  6. pause
  7. for /f "delims=" %%a in ('dir /b *.txt') do (
  8. echo %%a
  9.   for /f "delims=" %%i in (%%a) do (
  10.     set "foo=%%i"
  11.     set foo=!foo:    =^</p^>^<p^>^&nbsp;^&nbsp;^&nbsp;^&nbsp;!
  12.     set foo=!foo:  =^</p^>^<p^>^&nbsp;^&nbsp;^&nbsp;^&nbsp;!
  13.     echo !foo!>>1.html
  14.   )
  15. htox32c /IP /O0 1.html>nul 2>nul
  16. move /y 1.txt "%%a">nul 2>nul
  17. del 1.html>nul 2>nul
  18. )
  19. rem htox32c是需要下载的
  20. pause
复制代码

作者: hlzj88    时间: 2015-11-21 13:03

以前下的sed也许是版本问题,一直不能用,,所以对sed比较排斥,细读sed帮助,看来还是要学会用强大的sed.
作者: pcl_test    时间: 2016-8-21 14:31

  1. //&cls&cscript -nologo -e:jscript "%~f0"<"文本.txt"&pause&exit
  2. var text = WSH.StdIn.ReadAll().replace(/(^|\r?\n)[ ]{4}[\s\S]+?(?=($|\r?\n[ ]{4}))/g,function(a){return a.replace(/[\r\n]/g,'')+'\r\n'});
  3. WSH.Echo(text);
复制代码





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