Board logo

标题: [文本处理] 批处理能否去除文本重复的行 [打印本页]

作者: netdzb    时间: 2021-1-14 14:01     标题: 批处理能否去除文本重复的行

本帖最后由 netdzb 于 2021-1-14 14:08 编辑

原始文本如下,

BOB 123 1DB
JIM 456 3DB AX
DAVE 789 1DB
BOB 123 1DB
JIM 456 3DB AX
DAVE 789 1DB
BOB 123 1DB EXTRA BITS

--------------

这个使用awk是可以做到的,批处理能否实现去掉重复的文本行?

---------------------------

下面是我在csdn搜索到的代码,下面的cd.>B.txt是什么意思啊?

@echo off
cd.>B.txt
for /f "delims=" %%i in (A.txt) do (
find /i "%%i" B.txt||echo %%i>>B.txt
)
作者: qixiaobin0715    时间: 2021-1-14 14:09

回复 1# netdzb

作者: qixiaobin0715    时间: 2021-1-14 14:10

回复 1# netdzb
创建空文件
作者: netdzb    时间: 2021-1-14 14:11

回复 2# qixiaobin0715

不用搜了自己试了一下,原来相当于linux的touch。那4行的代码,我还是有一行没有看懂啊。
作者: netdzb    时间: 2021-1-14 14:13

回复 3# qixiaobin0715

我基础还是有点薄弱啊,还有一行没有看懂。

find /i "%%i" B.txt||echo %%i>>B.txt

||是代表或者的意思吗?
还是管道输出?
作者: qixiaobin0715    时间: 2021-1-14 14:16

意思是将a.txt一行一行的写入b.txt,如果不存在相同内容就写入,否则就忽略。
作者: qixiaobin0715    时间: 2021-1-14 14:20

回复 5# netdzb
前一个命令失败就执行后一个命令,否则就不执行。
作者: netdzb    时间: 2021-1-14 14:22

回复 7# qixiaobin0715

能换个容易看懂的写法吗?
我差点理解成为
find /i "%%i" B.txt|echo %%i>>B.txt
作者: qixiaobin0715    时间: 2021-1-14 14:24

论坛里搜一搜,应当有很多选择
作者: netdzb    时间: 2021-1-14 14:27

回复 9# qixiaobin0715

@echo off
cd.>B.txt
for /f "delims=" %%i in (b.txt) do (
find /i "%%i" a.txt|echo %%i>>B.txt
)

我修改成这样,可以完成去重的功能吗?
作者: qixiaobin0715    时间: 2021-1-14 14:29

好像不行,要有判断是否有重复行
作者: qixiaobin0715    时间: 2021-1-14 14:30

开始b.txt为空,就循环不起来了
作者: Batcher    时间: 2021-1-14 14:36

回复 5# netdzb


    你学习Linux脚本的时候也没有搞清楚 || 的用法吗?它在Linux和Windows里面的作用是一样的。
作者: Batcher    时间: 2021-1-14 14:38

回复 1# netdzb


批处理创建0字节的空文件
http://bbs.bathome.net/thread-939-4-1.html#pid49298
作者: Batcher    时间: 2021-1-14 14:40

回复 1# netdzb


批处理如何删除文本文件中重复的行
http://bbs.bathome.net/thread-5219-1-1.html

批处理如何删除txt文本中的重复行
http://bbs.bathome.net/thread-5509-1-1.html

批处理去除超大文本中的重复行
http://bbs.bathome.net/thread-4690-1-1.html

批处理删除文本重复行时如何使用变量延迟扩展
http://bbs.bathome.net/thread-5326-1-1.html

批处理中sort命令如何过滤重复行
http://bbs.bathome.net/thread-4896-1-1.html
作者: terse    时间: 2021-1-14 17:27

还是放弃每行find 效率太低 你开始定义行 然后判断是否定义 效率上升不是 一点哦




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