标题: [文本处理] 批处理如何批量删除多个UTF-8编码的文本内的指定字符串(<>之间的内容)? [打印本页]
作者: 377563714 时间: 2013-11-4 19:55 标题: 批处理如何批量删除多个UTF-8编码的文本内的指定字符串(<>之间的内容)?
本帖最后由 pcl_test 于 2016-8-14 12:08 编辑
在同一目录中,有很多个 *.trc 文件,批处理怎么才能删除这些内容后按原文件名输出到另一个文件夹???
例如;
[00:04.81]<736>嘉<564>俊<500>出<438>品<438>,<434>必<754>属<936>精<3059>品
[00:12.37]<548>每<316>段<500>故<623>事<377>都<312>有<312>一<376>篇<500>剧<1180>情
[00:17.12]<740>每<376>段<560>爱<564>情<312>都<310>像<378>动<312>人<565>旋<1180>律
[00:22.12]<740>一<312>颗<564>真<624>心<312>却<312>只<312>向<374>着<566>你<686>前<621>进
[00:27.25]<612>也<377>许<559>爱 <312>越<376>单<564>纯<560>越<564>着<1369>迷
怎么把符号 <> 之间,包括符号“<>”也全部删除。不是替换,删除后不留任何空格或者符号,自己摸索了很久,还是不会,求大神帮忙了!!!!!
作者: 1270697389 时间: 2013-11-4 20:16
sed -r "s/<[^>]+>//g" 1.trc > 2.trc
下个sed.exe
作者: DAIC 时间: 2013-11-4 20:18
- sed -r -i "s/<[^>]+>//g" *.trc
复制代码
作者: foxJL 时间: 2013-11-4 20:21
- @echo off & setlocal enabledelayedexpansion
- for %%b in (*.trc) do (
- (for /f "delims=" %%a in (%%b) do (
- set str=%%a&set str=!str: =!&set str=!str:^<= !
- for %%i in (!str!) do (set v=%%i&set v=!v:*^>=!&set/p=!v!<nul)
- echo,
- ))>>%%b_1.trc
- )
- pause
复制代码
作者: xxpinqz 时间: 2013-11-4 20:22
- @echo off
- set "dst=e:\111\"
- md "%dst%" 2>nul
- for %%i in (*.trc) do (
- (for /f "usebackq tokens=1* delims=]" %%a in ("%%i") do (
- setlocal enabledelayedexpansion
- if not "%%b"=="" (
- set "str=]%%b"
- for %%a in (0 1 2 3 4 5 6 7 8 9 ^< ^>) do set "str=!str:%%a=!"
- )
- echo,%%a!str!
- endlocal
- ))>"%dst%%%i"
- )
复制代码
作者: 377563714 时间: 2013-11-4 20:32
新写入的文件怎么是空文件啊?系统是W7的 4# foxJL
作者: foxJL 时间: 2013-11-4 20:39
回复 6# 377563714
我也是WIN7系统,测试了没有问题
批处理文件和.trc文件放同一目录
作者: foxJL 时间: 2013-11-4 20:40
把你的trc文件压缩一个传上来.
作者: 377563714 时间: 2013-11-4 20:44
是在同一目录的,就是写入的文件是空内容的 7# foxJL
作者: 377563714 时间: 2013-11-4 20:47
[attach]6864[/attach]回复 8# foxJL
作者: foxJL 时间: 2013-11-4 20:49
没有看到附件回复 10# 377563714
作者: 377563714 时间: 2013-11-4 20:49
回复 8# foxJL
作者: 377563714 时间: 2013-11-4 20:59
运行后就是这样的 11# foxJL
作者: foxJL 时间: 2013-11-4 21:00
又是UTF-8编码,纯P好像没办法.试试向别的高手请教VBS或PS吧
作者: 377563714 时间: 2013-11-4 21:05
谢谢版主的耐心帮助了 14# foxJL
作者: DAIC 时间: 2013-11-4 21:44
回复 12# 377563714
http://bbs.bathome.net/thread-27187-1-1.html
作者: happy886rr 时间: 2016-4-1 22:46
- fr *.trc -s -r:"<\d*>" /t:""
- fr *.trc -s -r:"\n" /t:"\r\n"
复制代码
作者: xp3000 时间: 2016-4-2 07:28
这个BAT+JS混编可以,我只能处理单个的不会批量,看看群里高手怎么写吧,要不然把原来帖子删除,取重点重发帖子一次
第一次正则表达式提取
(?=[一-龥\((]).{1,}([一-龥a-zA-Z,,!!\r\n]|\)))|(\d+<\d+>年)?(\d+<\d+>月)?(\d+<\d+>日)?
保存为TXT
第二次正则表达式替换
[\[ \]]|(<\d+>)
替换值为空白
处理成下面的状态,歌词之间原本有空格的没了感觉很奇怪
寂寞在唱歌
阿桑
天黑了孤独又慢慢割着
有人的心又开始疼了
爱很远了很久没再见了
就这样竟然也能活着
你听寂寞在唱歌
轻轻的恨恨的
歌声是这么残忍
让人忍不住泪流成河
......
作者: pcl_test 时间: 2016-8-14 20:45
- @echo off
- more +4 "%0" | mshta http://bathome.net/s/hta/ "eval(WSH.StdIn.ReadAll())"
- pause&exit
-
- dir().files().grep(/\.trc$/i)._each(
- function(file){
- bin=iconv.load(file);
- bom=iconv.checkBom(bin);
- if(bom=='undefined')bom=iconv.toStr(bin,'gb2312')?'gb2312':'utf-8';
- text=iconv.toStr(bin,bom);
- text=text.replace(/<[^<]*>/g,'');
- iconv.saveText(text,'New_'+file,bom)
- }
- )
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |