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

[文本处理] 【已解决】求批处理:在A文本中直接删除不含@的行

[复制链接]
发表于 2019-8-27 19:40:43 | 显示全部楼层 |阅读模式
本帖最后由 gu3669 于 2019-8-27 21:16 编辑

求批处理:在A文本中直接删除不含@的行,然后把所有空行也删除
A文本:
荆州日报 jzdaily@jz.hb.cninfo.net
荆州晚报 jzdaily@jz.hb.cninfo.net

农村新报 hbnmbbjb@hbdaily.com.cn
家庭文摘报
湖北日报 qzgzb@hbdaily.com.cn
市场指南报 scznbbjb@hbdaily.com.cn

运行批处理后应该是这样的:

荆州日报 jzdaily@jz.hb.cninfo.net
荆州晚报 jzdaily@jz.hb.cninfo.net
农村新报 hbnmbbjb@hbdaily.com.cn
湖北日报 qzgzb@hbdaily.com.cn
市场指南报 scznbbjb@hbdaily.com.cn

求高手帮忙,衷心感谢!

评分

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

查看全部评分

发表于 2019-8-27 20:01:07 | 显示全部楼层
  1. @echo off
  2. findstr "@" "A.txt" > "A.txt.tmp"
  3. move /y "A.txt.tmp" "A.txt"
复制代码

评分

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

查看全部评分

 楼主| 发表于 2019-8-27 20:33:08 | 显示全部楼层
非常感谢2楼的帮助。我想顺便问一下,在word里怎么解决这个问题,比如用查找替换,输入什么代码能删除不含@的行?再次感谢你!
发表于 2019-8-27 22:23:15 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2019-8-27 22:32 编辑

回复 3# gu3669
Word文档高级查找和替换通配符表示法比较变态,像这样整行替换尽量少用,不小心就会落入陷阱,好多通配符表达意义模糊不明确。不好用不好用。
点击替换——更多——勾选使用通配符
查找内容填入:^13[!\@^13]{1,}^13
替换为:^13
点击全部替换
如果不含@的行存在连续多个行,需多次点击全部替换。直至0次替换为止。
替换前备份文件,以免出现意外。
首行不含@,请手工删除。
发表于 2019-8-28 08:05:46 | 显示全部楼层
回复 4# qixiaobin0715


    哪个通配符表达意义模糊不明确?
发表于 2019-8-28 09:21:22 | 显示全部楼层
回复 5# Batcher
比如通配符“@”和“*”就很难搞定。
按照Word文档中查找中的特殊格式解释为:
@——前一个或多个。我的理解是前面的字符一个或多个,相当于正则表达式中的量词“+”。
*——零个或多个字符。我的理解是相当于正则表达式中的“.*”组合。
我们将下面一段示范文本复制到Word文档中,进行高级查找
  1. 我们有三月、六月、或者一年的储期,更不用说还有三年、五年和十年的储期了。

  2. We offer a choice of three, six or #####twelve month maturities, let alone three, five or ten year plans.
  3. 英语中表达递进关系时,最常用的有“let alone”“still less”“much less”等,例如:
  4. I cannot afford to rent [rent] a house, let alone buy it.(我连房租都付不起,更谈不上买房了。)
  5. This firm can hardly pay##### for the salary still less for their development. (这间公司连发工资都成问题,
  6. 更谈不上发展了。)
  7. This firm has never built a common highway, much less an expressway (这家公司连普通公路都
  8. 未建造过,就更谈不上建高速公路了。)
复制代码
1.我想查找相连的字符#。
勾选使用通配符
查找内容:#@
实际上匹配的是单个的#
2.查找数目相连的不定的#,后面是单词“twelve”
勾选使用通配符
查找内容:#@twelve
这一回查找结果是我所期望的
3.查找“pay”+“若干#”的组合
勾选使用通配符
查找内容:pay#@
结果只匹配pay#,后面的#就忽略了。
4.有一回我想匹配以t开头e结尾的单词,这么写的表达式t*e,结果很无奈,不过这次是自己该打,太想当然了,实际应当在表达式两边加上单词边界。这里主要是为了说“*”可以匹配换行符的,考虑不周有可能匹配几行、几十行、甚至上百行。也可以用t*e匹配上面文本,看一看会得到什么结果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 08:49 , Processed in 0.018507 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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