标题: [文本处理] 【已解决】批处理如何删除文本里多余的重复行(相同行只保留一个)? [打印本页]
作者: 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
- @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了,分享下- @echo off
- for %%j in (*.txt) do (
- (for /f "tokens=*" %%i in (%%j) do findstr /C:"%%i" $>nul||echo %%i)>$
- move $ %%j
- )
- pause
复制代码
作者: CrLf 时间: 2016-3-18 11:53
回复 9# bailong360
爱抚楼主狗头,莫哭,莫哭
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |