找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35275|回复: 21

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

[复制链接]
发表于 2018-12-17 17:54:36 | 显示全部楼层 |阅读模式
本帖最后由 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也不能用了,错误同前。匪夷所思。
本意提醒大家注意到这样的问题,版主热情关心,建议把我的工具发到首页,忘能有大家帮助共同解决。特补充内容到三楼,期待热心人帮助。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2018-12-17 19:09:01 | 显示全部楼层
本帖最后由 WHY 于 2018-12-17 21:30 编辑
  1. sed -r ":a;s/(“[^“”]*)<br>([^“”]*”)/\1\2/g;ta" 1.txt > 2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2018-12-17 19:40:56 | 显示全部楼层
本帖最后由 hlzj88 于 2018-12-22 22:27 编辑

回复 2# WHY

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

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

附件已上传,http://www.bathome.net/attachmen ... XhxTUo4dzd1WQ%3D%3D
发表于 2018-12-17 20:16:49 | 显示全部楼层
回复 3# hlzj88


    请在顶楼给个具体的例子吧
发表于 2018-12-17 20:22:07 | 显示全部楼层
本帖最后由 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;
复制代码
 楼主| 发表于 2018-12-17 20:45:09 | 显示全部楼层
回复 4# Batcher
已重新举例。
回复 5# 523066680
你说的是,对正则表达一头雾水,sed使用也浅。好吧,不给自己找理由。也谢谢你。
发表于 2018-12-17 21:32:37 | 显示全部楼层
回复 3# hlzj88


    已修改
 楼主| 发表于 2018-12-17 21:41:30 | 显示全部楼层
回复 7# WHY

应Batcher版主提议,已修改一楼的例句,可能能代表更实际的复杂情况。你的代码测试可去掉 舞台 那句里的,第一句反复执行无变化。
谢谢。麻烦你再看看。
发表于 2018-12-17 21:56:54 | 显示全部楼层
回复 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技术 +1 收起 理由
hlzj88 + 1 敬仰致谢

查看全部评分

 楼主| 发表于 2018-12-17 22:44:48 | 显示全部楼层
回复 9# WHY
非常感谢你,通过比较和怀疑,重新下载了sed 4.4版本,二楼代码一次成功。原来是我的sed有不足。系统win7
 楼主| 发表于 2018-12-20 21:20:59 | 显示全部楼层
补充,sed4.4的处理速度不敢恭维,整体慢了很多。    想放弃,但是替换回原sed后,运行出错,大意是文件太大不能载入吧。重装两台电脑也是同样问题。
理论上应该是不可能的问题,毕竟发生了。不想这样来联系问题,但的确是几乎没有做其他事情就这样了。
有看到的,可以参考为戒。
发表于 2018-12-21 14:08:06 | 显示全部楼层
本帖最后由 tigerpower 于 2018-12-25 18:01 编辑

回复 11# hlzj88

下载 sed 4.5
发表于 2018-12-21 14:16:52 | 显示全部楼层
回复 11# hlzj88


    需要处理一个很大的文件(大概多少行,文件大小多少M)?还是很多个小文件(大概多少文件)?
 楼主| 发表于 2018-12-21 22:24:03 | 显示全部楼层
回复 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,发现已不能如前顺利处理。怀疑在单位重复上面的经过,同样结果。不明原因。也无力深究。
发表于 2018-12-21 22:34:58 | 显示全部楼层
回复 14# hlzj88


    sed 4.4 处理2.5M文件大概几分钟?12楼说的sed 4.5速度如何?完整bat代码发出来看看是否可以进一步优化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:59 , Processed in 0.025624 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表