Board logo

标题: [文本处理] 批处理如何删除文本数字行?文本有千万数据? [打印本页]

作者: idc878787    时间: 2023-4-13 09:32     标题: 批处理如何删除文本数字行?文本有千万数据?

删除文本数字行?文本有千万数据?

文本a.txt  内容如下

yyghsw.xmk
gzugo.xmk
hzjxwuliu.xmk
34599.xmk
kubiao100.xmk
34554-3453.xmk
adverthk.xmk
45645-7657.xmk
cn-xqwl.xmk
4335499.xmk

删除下面的这4行 怎么写?
34599.xmk
34554-3453.xmk
45645-7657.xmk
4335499.xmk
作者: Batcher    时间: 2023-4-13 09:44

回复 1# idc878787


http://bcn.bathome.net/s/tool/index.html?key=grep
  1. grep -vE "^[-0-9]+.xmk$" 1.txt > 2.txt
复制代码

作者: idc878787    时间: 2023-4-13 10:07

回复 2# Batcher


多谢
作者: hlzj88    时间: 2023-4-13 19:50

  1. findstr /ivb "1 2 3 4 5 6 7 8 9 0" a.txt>>b.txt
复制代码

作者: Batcher    时间: 2023-4-13 20:03

回复 4# hlzj88


我猜楼主的千万数据里面有类似这样的需要保留:
1a.xmk
作者: qixiaobin0715    时间: 2023-4-14 09:18

使用findstr可以这样。
1.如果数字行最多只有一个短横分隔且短横位于数字与数字之间,可以进行精确表达:
  1. findstr /xv "[0-9][0-9]*.xmk [0-9][0-9]*-[0-9][0-9]*.xmk" 1.txt>2.txt
复制代码
2.如果存在多个短横,就不能精确表达,大致这样:
  1. findstr /xv "[0-9].xmk [0-9][-0-9]*[0-9].xmk" 1.txt>2.txt
复制代码

作者: qixiaobin0715    时间: 2023-4-14 09:25

findstr中的所谓“一般表达式”使用起来比较别扭,还是使用其它语言的正则表达式比较顺手且不是一般的强大。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2