Board logo

标题: [文本处理] [已解决]bat或vbs删除重复数据 [打印本页]

作者: w1983912    时间: 2014-7-21 23:18     标题: [已解决]bat或vbs删除重复数据

本帖最后由 w1983912 于 2017-11-16 01:01 编辑

BAT 或者vbs

入txt

若干txt  1-1000多个  每个txt 约有5万行左右数据,淡然也可以分割后处理


每行数据组成:###后为数字   前为  符号 字母 数字 中文 其他文都有可能

以1.txt开始


游戏###450
高 1aaa###9910
游戏###150
123可以 哈么###1
kdkekke###70001
游戏game###450

先把 ###号前的字符串 绝对匹配 删除重复的 除第一条外 (保留行号最小的那条)
输出格式为: @@@游戏###450!!!       @@@ ### !!! 这3个也可以换成别的 最好赋值吧  方便我换成别的字符

@@@游戏###450!!!
@@@高 1aaa###9910!!!
@@@123可以 哈么###1!!!
@@@kdkekke###70001!!!
@@@游戏game###450!!!


保存为all.txt文件


然后进入处理2.txt   删除掉 前部分重复的数据 再和all.txt 比较是否有重复的    不重复的都加进all.txt 按顺序  如1.txt  然后是2.txt写入all.txt    .......


最好先处理 单个txt  因为单个小的txt重复可以处理的快吧  

具体方式 按你的来  高效处理为好

有劳各位朋友帮忙一下 先谢谢了
作者: wjx515    时间: 2014-7-22 12:55

所有文件都合为一个文件1.txt,用gawk去重复,速度很快
  1. gawk -F# "{a[$1]++;if(a[$1]==1)print $0}" t.txt>>1.txt
复制代码

作者: w1983912    时间: 2014-7-22 23:30

回复 2# wjx515


    谢谢关注和帮忙,似乎无法使用

继续请教各位朋友,谢谢
作者: CrLf    时间: 2014-7-23 13:22

本帖最后由 CrLf 于 2014-7-23 13:26 编辑

回复 2# wjx515


    在 {} 之外的部分是条件,条件后如果有代码块则执行代码块,如果没有则默认为 {printf},所以可以简写:
  1. gawk -F# "!a[$1]++" t.txt>>1.txt
复制代码

作者: DAIC    时间: 2014-7-23 13:23

回复 3# w1983912


    下载一个 gawk.exe
作者: w1983912    时间: 2014-7-24 00:29

回复 5# DAIC


    谢谢楼上的exe文件,成功了也感谢大家的帮忙 谢谢
作者: wjx515    时间: 2014-7-25 10:24

回复 4# CrLf


    多谢大师指导!




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