找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 97909|回复: 22

[文件操作] 批处理如何合并两个txt并去除重复行(相同行只保留一个)?

[复制链接]
发表于 2016-3-26 21:28:28 | 显示全部楼层 |阅读模式
批处理,合并2个txt文件:有相同的行就合并成1行,没有相同的全部添加到新文件里。

1.txt文件如下:
a
b
c
d
2.txt文件如下:
a
b
e
f
合并后,3.txt如下:
a
b
c
d
e
f

评分

参与人数 1PB -30 收起 理由
pcl_test -30 未按版规发帖

查看全部评分

发表于 2016-3-26 21:33:25 | 显示全部楼层
一点学习能力都没有的吗..
 楼主| 发表于 2016-3-26 21:46:39 | 显示全部楼层
回复 3# codegay


    真不会。。。
发表于 2016-3-26 21:56:22 | 显示全部楼层
逻辑不就是合并后去重吗.
论坛里有成吨的这类重复性的代码了吧.
发表于 2016-3-26 22:10:09 | 显示全部楼层
本帖最后由 happy886rr 于 2016-3-26 22:37 编辑

回复 3# ygqiang
已加入换行
  1. @echo off
  2. echo,>>1.txt
  3. echo,>>2.txt
  4. findstr /vig:2.txt 1.txt>new.txt
  5. findstr .*  2.txt>>new.txt
  6. pause
复制代码
 楼主| 发表于 2016-3-26 22:16:34 | 显示全部楼层
回复 5# happy886rr


    多谢。。。
  1. copy 1.txt+2.txt test.txt


  2. @echo off
  3. for /f "delims=" %%i in (test.txt) do (
  4.     if not defined %%i set %%i=A & echo %%i>>ztest.txt)
复制代码
发表于 2016-3-26 22:25:54 | 显示全部楼层
回复 6# ygqiang


    copy /b 1.txt + 2.txt 3.txt
不过如果1.txt结尾不含回车换行就会有问题
发表于 2016-3-26 22:28:00 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('find /v "" ^< 1.txt ^& type 2.txt') do (
  3.     if not defined _%%i (
  4.         echo;%%i
  5.         set _%%i=1
  6.     )
  7. )
  8. pause
复制代码
发表于 2016-3-26 22:30:02 | 显示全部楼层
第三方
  1. gawk "{if(!($0 in a)){print};a[$0]}" 1.txt 2.txt>3.txt
复制代码
发表于 2016-3-26 23:50:11 | 显示全部楼层
  1. gawk "!a[$0]++" 1.txt 2.txt>3.txt
复制代码
发表于 2016-3-26 23:55:54 | 显示全部楼层
本帖最后由 pcl_test 于 2016-8-18 22:00 编辑
  1. //&cls&cscript -nologo -e:jscript "%~f0" "1.txt" "2.txt"&pause&exit
  2. var s = '', a = {}, files = WScript.Arguments;
  3. var fso = new ActiveXObject('Scripting.FileSystemObject');
  4. for (var i = 0; i<files.length; i++){
  5.     var f = fso.opentextfile(files(i), 1);
  6.     while(!f.AtEndOfStream){
  7.         var str = f.ReadLine();
  8.         if(!a[str]){
  9.             a[str] = 1;
  10.             s += str+'\r\n';
  11.             //数据太大的话还是逐行输出吧 WSH.echo(str);
  12.         }
  13.     }
  14.     f.Close();
  15. }
  16. WSH.echo(s);
复制代码
发表于 2016-3-27 00:07:07 | 显示全部楼层
== ygqiang 是版主小号...?
名字都跑到版主签名档里了.
发表于 2016-3-27 00:51:10 | 显示全部楼层
本帖最后由 codegay 于 2016-3-27 01:55 编辑
  1. """
  2. python文件去重合并.py
  3. 2016年3月27日 00:34:36 codegay
  4. """
  5. with open ("1.txt",encoding="utf-8") as f1, open('2.txt',encoding='utf-8') as f2, open('result.txt',"w+",encoding='utf8') as result:
  6.     result.writelines(list(frozenset(f1.readlines()+f2.readlines())))
复制代码
发表于 2016-3-27 03:26:03 | 显示全部楼层
本帖最后由 codegay 于 2016-3-27 09:12 编辑
  1. #="""
  2. julia文本文件合并去重.jl
  3. http://bbs.bathome.net/thread-39822-1-1.html
  4. 2016年3月27日 01:02:58 codegay
  5. """=#
  6. f1=open("1.txt")
  7. txt1=readlines(f1)
  8. txt2=readlines(open("2.txt"))
  9. txt=vcat(txt1,txt2) #以readlines取读文件流,vcat连接两个Array,julia不支持+号连接字符串和数组,支持$符内插
  10. @show length(txt)
  11. result=unique(txt) #内置函数unique去重
  12. #result=Set(txt) Set()方法把数组转为集合,集合中的元素唯一,Set是首字母大写的!
  13. @show length(result)
  14. write(open("result.txt","w+"),result) #与python不同,julia把数组写入文件不需要wirtelines
复制代码
#装B一行流
  1. write(open("result.txt","w+"),unique(vcat(readlines(open("1.txt")),readlines(open("2.txt")))))
复制代码
  1. #julia管道一行流
  2. #union("1.txt"|>open|>readlines,"2.txt"|>open|>readlines)|> xxx ->write(open("result.txt","w"),xxx);
  3. write(open("result.txt","w"),union(["1.txt"|>open|>readlines; "2.txt"|>open|>readlines]));
复制代码

评分

参与人数 2技术 +2 收起 理由
CrLf + 1 耐撕
happy886rr + 1 夙兴夜寐,新语言更适合计算。

查看全部评分

 楼主| 发表于 2016-3-27 07:13:30 | 显示全部楼层
回复 8# WHY


    处理结果有点问题。。

比如:

QQ网购每日精选---QQ网购,轻松购|TXGuiFoundation|

处理以后,会出现乱码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 21:28 , Processed in 0.012270 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表