Board logo

标题: [文本处理] [已解决]批处理怎样把字符串替换成回车并清空所有空行? [打印本页]

作者: w1983912    时间: 2011-2-8 23:40     标题: [已解决]批处理怎样把字符串替换成回车并清空所有空行?

缩略图:       和     标题:     后面都有一个空格  复制测试就可
1.TXT 文件内容:

缩略图:
标题: 【强势三生关注|||三生:每天|||30  分钟|||bbb 000

缩略图:
标题: OPK最|||有前途的|||事业|||项目|||123456

缩略图:
标题: 2010年|||最诚信的网|||游戏

变成X.TXT:
【强势三生关注
三生:每天
30  分钟
bbb 000
OPK最
有前途的
事业
项目
123456
2010年
最诚信的网
游戏

以上只是列了几行   ,实际有10M-1G一个的TXT  如果能实现  尽量提供能支持大型文件的批处理命令

请知道的朋友帮帮我   先谢谢了

[ 本帖最后由 w1983912 于 2011-2-9 22:48 编辑 ]
作者: CrLf    时间: 2011-2-9 03:19

如果是显示在屏幕上:
  1. @echo off&setlocal enabledelayedexpansion
  2. set h=^
  3. for /f "delims=" %%a in (a.txt) do (
  4. set tmp=%%a
  5. for %%a in ("!h!") do echo !tmp:^|^|^|=%%~a!
  6. )
  7. pause
复制代码
如果是输入到x.txt:
  1. @echo off&setlocal enabledelayedexpansion
  2. set h=^
  3. (for /f "delims=" %%a in (a.txt) do (
  4. set tmp=%%a
  5. for %%a in ("!h!") do echo !tmp:^|^|^|=%%~a!
  6. ))>tmp.tmp
  7. (for /f "delims=" %%a in (tmp.tmp) do echo %%a)>x.txt
  8. pause
复制代码
这个输出到文件的用法不知道有没有人开发过...

[ 本帖最后由 zm900612 于 2011-2-9 03:21 编辑 ]
作者: hanyeguxing    时间: 2011-2-9 07:24

  1. @echo off
  2. (for /f "usebackq tokens=1*" %%a in ("1.txt") do if not "%%b"=="" echo;%%b)>"x.txt"
  3. fr.exe "x.txt" /ric:"|||" /t:"\r\n"
复制代码
fr.exe:http://ishare.iask.sina.com.cn/f/7088512.html
作者: w1983912    时间: 2011-2-9 09:38     标题: 回复 2楼 的帖子

@echo off&setlocal enabledelayedexpansion
set h=^


(for /f "delims=" %%a in (a.txt) do (
set tmp=%%a
for %%a in ("!h!") do echo !tmp:^|^|^|=%%~a!
))>tmp.tmp
(for /f "delims=" %%a in (tmp.tmp) do echo %%a)>x.txt
pause

谢谢 还可以  但是没有把        缩略图:       和     标题:        去掉

能么   朋友
作者: w1983912    时间: 2011-2-9 09:40     标题: 回复 3楼 的帖子

也同样谢谢3楼的朋友       使用3楼这位朋友的代码      变成了一行一个字符..........
作者: Batcher    时间: 2011-2-9 09:42     标题: 回复 2楼 的帖子

这个可以有。

提高批处理代码效率的常用技巧及方案
http://bbs.bathome.net/thread-4831-1-1.html
http://bbs.bathome.net/viewthread.php?tid=4482#pid28940
作者: w1983912    时间: 2011-2-9 09:56     标题: 回复 6楼 的帖子

.................这么多说明..............

继续请求帮助
作者: CUer    时间: 2011-2-9 12:32

  1. sed "s/缩略图: \|标题: //g;s/|||/\n/g" 1.txt | sed "/^$/d" | more >2.txt
复制代码

作者: CrLf    时间: 2011-2-9 13:25

  1. @echo off&setlocal enabledelayedexpansion
  2. set h=^
  3. (for /f "delims=" %%a in ('findstr "^标题: " a.txt') do (
  4.    set tmp=%%a
  5.    set tmp=!tmp:~4!
  6.    for %%a in ("!h!") do echo !tmp:^|^|^|=%%~a!
  7. ))>tmp.tmp
  8. (for /f "delims=" %%a in (tmp.tmp) do echo %%a)>x.txt
  9. pause
复制代码

[ 本帖最后由 zm900612 于 2011-2-9 22:53 编辑 ]
作者: w1983912    时间: 2011-2-9 22:47     标题: 回复 9楼 的帖子

8楼的 不知道为什么 会提示 非法命令

9楼的朋友  一步到位。。。。。。感谢所有回答者  辛苦了
作者: wc726842270    时间: 2011-2-9 23:46     标题: 回复 10楼 的帖子

兄弟。SED可是很强的文本处理的外部命令啊。只要你对正则表达式运理解的好,用它应该是首选。
SED下载:http://www.bathome.net/thread-3981-1-1.html(L上用的是哪版的有些不清楚)
不过个人建议一下,如果用到了外部命令还是给个下载地址吧
作者: CrLf    时间: 2011-2-10 00:33

嗯,sed确实很强大,准备学一下~
作者: Batcher    时间: 2011-2-11 18:07     标题: 回复 12楼 的帖子

sed教程收集
http://bbs.bathome.net/thread-1929-1-1.html

awk教程收集
http://bbs.bathome.net/thread-3997-1-1.html
作者: CrLf    时间: 2011-2-11 18:21

正好用到,多谢楼上!
作者: CrLf    时间: 2011-2-11 18:25

顺便回复一下6楼:
我指的是先用换行符替换,再用for把单个换行符变成换行+回车输出到文件




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