Board logo

标题: [文本处理] 【已解决】批处理如何删除文本里多余的重复行(相同行只保留一个)? [打印本页]

作者: enoone1    时间: 2016-3-16 16:48     标题: 【已解决】批处理如何删除文本里多余的重复行(相同行只保留一个)?

本帖最后由 enoone1 于 2016-3-18 12:20 编辑

求助,如何去除当前目录下的所有文本文件重复行
如当前目录下有a.txt 和b.txt:
a.txt内容:
1
1
2

b.txt内容:
1
1
2
3

一个BAT处理后a.txt文件变成
1
2

b.txt变成
1
2
3
作者: bailong360    时间: 2016-3-16 22:04

请善用论坛搜索,论坛中已有大量已解决的同类问题
作者: enoone1    时间: 2016-3-17 09:29

回复 2# bailong360

论坛和网络上最常用的方法(判断行是否定义的方法)在我发帖前已尝试过,见图,无果,b.txt去重错误
    请大神们知道我写错在哪,指点下
作者: codegay    时间: 2016-3-17 09:41

如何高效地做到大文本去除重复行https://segmentfault.com/q/1010000000445384
作者: enoone1    时间: 2016-3-17 09:51

本帖最后由 enoone1 于 2016-3-17 09:53 编辑

回复 4# codegay


    是个方法 但是我处理简单的文本不想用到第三方的uniq,存BAT最好,迁移环境方便使用。
作者: codegay    时间: 2016-3-17 10:05

回复 5# enoone1


    ...关我什么事。。。
作者: bailong360    时间: 2016-3-17 22:55

本帖最后由 bailong360 于 2016-3-17 22:58 编辑

回复 3# enoone1
你咋不先说清楚呢,加上这句话这问题才值得回答。

每处理一个文件时要初始化一次变量表,否则上一个文本的定义还会保留。你的代码相当于所有txt合并起来去重
具体方法   在处理一个文件之前使用setlocal开启一个新的变量表,处理完毕后使用endlocal丢弃。话说手机党不方便码,下次提问请将代码发出

顺便代码里不要太多&,以便阅读
作者: CrLf    时间: 2016-3-17 23:15

  1. @mshta http://bathome.net/s/hta/?string "o={};type('旧.txt').split(/\r?\n/).each(function(s){o[s]||(o[s]=1)});names(o)" >新.txt
复制代码

作者: bailong360    时间: 2016-3-18 06:55

回复 8# CrLf
我用纯批处理的时候,你们在用第三方
我用第三方的时候,你们在用js混编
我用js混编的时候,你们玩起hta来了
作者: codegay    时间: 2016-3-18 09:26

回复 9# bailong360


    哈哈,可以玩玩julia啊.可以很方便地调用其它语言的代码.
作者: enoone1    时间: 2016-3-18 09:30

换了种方式,OK了,分享下
  1. @echo off
  2. for %%j in (*.txt) do (
  3.     (for /f "tokens=*" %%i in (%%j) do findstr /C:"%%i" $>nul||echo %%i)>$
  4.     move $ %%j
  5. )
  6. pause
复制代码

作者: CrLf    时间: 2016-3-18 11:53

回复 9# bailong360


    爱抚楼主狗头,莫哭,莫哭




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