[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]sed去除关键词之间的关键词

本帖最后由 hlzj88 于 2018-12-22 21:36 编辑

如题,假设文本内容为
     罗伯特不满:“我最近运气不好,<br>也不需要你让着我。<br>我不信和你打赌<br>会一直输。”<br>陆恪当时没在意,但晚上回到房间躺下,脑中有种若有似无的灵感在飘荡着。<br>罗伯特没有回答,而是继续问道:“想要有一个更大舞台么?<br>”<br>陆恪吃惊:“啊?”

上句为人为制造,可见,有三对完整引号,如果按这样断行,不符合正常断句。因此只去除引号内的<br>,其他保留,基本符合常规断句。
谢谢!

以上是原问题,经why帮助已解决,代码在2楼。因我的sed版本问题导致不能成功,所以更新了sed。
同时发现新问题,使用sed4.4版本后,处理较多,较大文件时,这个sed相比原来的sed(版本不清楚,大小234K)在速度上变得明显慢了。为了速度,使用原来的sed后,直接出现Program too big to fit in memory错误,这个版本的sed不能使用了,经两台重装系统后都发现老sed也不能用了,错误同前。匪夷所思。
本意提醒大家注意到这样的问题,版主热情关心,建议把我的工具发到首页,忘能有大家帮助共同解决。特补充内容到三楼,期待热心人帮助。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
目的,学习批处理

本帖最后由 WHY 于 2018-12-17 21:30 编辑
  1. sed -r ":a;s/(“[^“”]*)<br>([^“”]*”)/\1\2/g;ta" 1.txt > 2.txt
复制代码
1

评分人数

TOP

本帖最后由 hlzj88 于 2018-12-22 22:27 编辑

回复 2# WHY

这个代码是专职 从网页文件提取正文的。

1网页提取.bat  设计要使它能兼容不同网页编码,不同行长,gizp压缩网页,不同排版。使提取的网页正文尽量干净。产生是文本要通过重新排版,使内容更符合常规断句。要求能独立运行,也可被别的文件调用。

附件已上传,http://www.bathome.net/attachmen ... XhxTUo4dzd1WQ%3D%3D
目的,学习批处理

TOP

回复 3# hlzj88


    请在顶楼给个具体的例子吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 523066680 于 2018-12-17 20:23 编辑

回复 3# hlzj88

    2楼已经给出了核心思路。相信好学的人已经能够举一反三,而不是丢一句 “经测试不成功”。

加个循环的事儿~ Perl
  1. my $s='其他词“其他词<br>a<br>其他词”其他词';
  2. while ($s=~s/(“[^“”]+)<br>([^“”]+”)/$1$2/) {};
  3. print $s;
复制代码

TOP

回复 4# Batcher
已重新举例。
回复 5# 523066680
你说的是,对正则表达一头雾水,sed使用也浅。好吧,不给自己找理由。也谢谢你。
目的,学习批处理

TOP

回复 3# hlzj88


    已修改

TOP

回复 7# WHY

应Batcher版主提议,已修改一楼的例句,可能能代表更实际的复杂情况。你的代码测试可去掉 舞台 那句里的,第一句反复执行无变化。
谢谢。麻烦你再看看。
目的,学习批处理

TOP

回复 8# hlzj88


   
Microsoft Windows [版本 10.0.17763.168]
(c) 2018 Microsoft Corporation。保留所有权利。

C:\Users\WHY>cd /d E:\Test

E:\Test>type 1.txt
如题,假设文本内容为
     罗伯特不满:“我最近运气不好,<br>也不需要你让着我。<br>我不信和你打赌<br>会一直输。”<br>陆恪当时没在意,但晚上回 到房间躺下,脑中有种若有似无的灵感在飘荡着。<br>罗伯特没有回答,而是继续问道:“想要有一个更大舞台么?<br>”<br>陆恪吃惊:“啊?”

E:\Test>sed -r ":a;s/(“[^“”]*)<br>([^“”]*”)/\1\2/g;ta" 1.txt > 2.txt

E:\Test>type 2.txt
如题,假设文本内容为
     罗伯特不满:“我最近运气不好,也不需要你让着我。我不信和你打赌会一直输。”<br>陆恪当时没在意,但晚上回到房间躺下, 脑中有种若有似无的灵感在飘荡着。<br>罗伯特没有回答,而是继续问道:“想要有一个更大舞台么?”<br>陆恪吃惊:“啊?”

E:\Test>
1

评分人数

TOP

回复 9# WHY
非常感谢你,通过比较和怀疑,重新下载了sed 4.4版本,二楼代码一次成功。原来是我的sed有不足。系统win7
目的,学习批处理

TOP

补充,sed4.4的处理速度不敢恭维,整体慢了很多。    想放弃,但是替换回原sed后,运行出错,大意是文件太大不能载入吧。重装两台电脑也是同样问题。
理论上应该是不可能的问题,毕竟发生了。不想这样来联系问题,但的确是几乎没有做其他事情就这样了。
有看到的,可以参考为戒。
目的,学习批处理

TOP

本帖最后由 tigerpower 于 2018-12-25 18:01 编辑

回复 11# hlzj88

下载 sed 4.5

TOP

回复 11# hlzj88


    需要处理一个很大的文件(大概多少行,文件大小多少M)?还是很多个小文件(大概多少文件)?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13# Batcher

先谢谢12楼tigerpower

回版主:网络小说下载合并处理,因sed的替换等很方便,且有回车效果,处理很方便,所以使用sed。文件不大,十几K的小文件,为提速,避免多个文件单独处理需多次启动sed和其他命令,采取n合1方式,加限制,每个合并后文件不大于2.5M。替换后sed后运行发现整体速度明显下降。于是打算重新用原来版本的sed,出现Program too big to fit in memory提示,已不能处理文件。对于十几K的小文件,sed也会出现这提示,已不能处理文件。百度无解,用新sed可工作就是慢的着急。刚好也打算重做系统,一并解决。但重装后使用老sed,发现已不能如前顺利处理。怀疑在单位重复上面的经过,同样结果。不明原因。也无力深究。
目的,学习批处理

TOP

回复 14# hlzj88


    sed 4.4 处理2.5M文件大概几分钟?12楼说的sed 4.5速度如何?完整bat代码发出来看看是否可以进一步优化。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表