标题: [文本处理] [已解决]批处理怎样把字符串替换成回车并清空所有空行? [打印本页]
作者: 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
如果是显示在屏幕上:- @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!
- )
- pause
复制代码
如果是输入到x.txt:- @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
复制代码
这个输出到文件的用法不知道有没有人开发过...
[ 本帖最后由 zm900612 于 2011-2-9 03:21 编辑 ]
作者: hanyeguxing 时间: 2011-2-9 07:24
- @echo off
- (for /f "usebackq tokens=1*" %%a in ("1.txt") do if not "%%b"=="" echo;%%b)>"x.txt"
- 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
- sed "s/缩略图: \|标题: //g;s/|||/\n/g" 1.txt | sed "/^$/d" | more >2.txt
复制代码
作者: CrLf 时间: 2011-2-9 13:25
- @echo off&setlocal enabledelayedexpansion
- set h=^
-
-
- (for /f "delims=" %%a in ('findstr "^标题: " a.txt') do (
- set tmp=%%a
- set tmp=!tmp:~4!
- for %%a in ("!h!") do echo !tmp:^|^|^|=%%~a!
- ))>tmp.tmp
- (for /f "delims=" %%a in (tmp.tmp) do echo %%a)>x.txt
- 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 |