Board logo

标题: [文本处理] 批处理如何去重多个文件呢 [打印本页]

作者: 014131    时间: 2021-5-21 22:05     标题: 批处理如何去重多个文件呢

  1. @echo off
  2. set /p=<nul>2.txt
  3. rem创建2.txt
  4. for /f "delims=" %%i in (1.txt) do (
  5. rem读取1.txt,一次读一行
  6. findstr "%%i" "2.txt">nul||echo %%i>>2.txt
  7. rem第一次循环时,在2.txt中找1.txt的第一行,不存在就把1.txt的第一行输入2.txt
  8. rem第二次循环时,在2.txt中找1.txt的第二行,不存在就把1.txt的第一行输入2.txt
  9. rem以此类推
  10. rem那两条竖杠是主要的,作用是左边执行成功就不执行右边,左边没执行成功就执行右边
  11. )
  12. pause
复制代码
上面是单文件去重的,同时去重文件夹下的所有txt文件改如何写呢
作者: Batcher    时间: 2021-5-21 22:50

回复 1# 014131


单文件去重用这个方法效率有点低,可以参考其他不同的写法:
http://bbs.bathome.net/thread-5219-1-1.html
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
http://bbs.bathome.net/thread-4896-1-1.html
作者: newswan    时间: 2021-5-21 23:35

本帖最后由 newswan 于 2021-5-21 23:37 编辑

多文件去重,意思是
1、每个文件没有重复的
2、所有文件没有重复的

单文件用 gnu 命令
sort 1.txt | uniq > _1.txt
作者: 1152    时间: 2021-5-22 13:29

没有重复的?
作者: cutebe    时间: 2021-5-22 22:19

三方工具版块下载:gawk.exe
  1. gawk "{if(!a[$0]){print $0;a[$0]++}}" 2.txt 1.txt
复制代码

作者: zag0699    时间: 2021-5-27 10:34

DoubleKiller




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