Board logo

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

作者: ygqiang    时间: 2016-3-26 21:28     标题: 批处理如何合并两个txt并去除重复行(相同行只保留一个)?

批处理,合并2个txt文件:有相同的行就合并成1行,没有相同的全部添加到新文件里。

1.txt文件如下:
a
b
c
d
2.txt文件如下:
a
b
e
f
合并后,3.txt如下:
a
b
c
d
e
f
作者: codegay    时间: 2016-3-26 21:33

一点学习能力都没有的吗..
作者: ygqiang    时间: 2016-3-26 21:46

回复 3# codegay


    真不会。。。
作者: codegay    时间: 2016-3-26 21:56

逻辑不就是合并后去重吗.
论坛里有成吨的这类重复性的代码了吧.
作者: happy886rr    时间: 2016-3-26 22:10

本帖最后由 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
复制代码

作者: ygqiang    时间: 2016-3-26 22:16

回复 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)
复制代码

作者: WHY    时间: 2016-3-26 22:25

回复 6# ygqiang


    copy /b 1.txt + 2.txt 3.txt
不过如果1.txt结尾不含回车换行就会有问题
作者: WHY    时间: 2016-3-26 22:28

  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
复制代码

作者: pcl_test    时间: 2016-3-26 22:30

第三方
  1. gawk "{if(!($0 in a)){print};a[$0]}" 1.txt 2.txt>3.txt
复制代码

作者: CrLf    时间: 2016-3-26 23:50

  1. gawk "!a[$0]++" 1.txt 2.txt>3.txt
复制代码

作者: pcl_test    时间: 2016-3-26 23:55

本帖最后由 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);
复制代码

作者: codegay    时间: 2016-3-27 00:07

== ygqiang 是版主小号...?
名字都跑到版主签名档里了.
作者: codegay    时间: 2016-3-27 00:51

本帖最后由 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())))
复制代码

作者: codegay    时间: 2016-3-27 03:26

本帖最后由 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]));
复制代码

作者: ygqiang    时间: 2016-3-27 07:13

回复 8# WHY


    处理结果有点问题。。

比如:

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

处理以后,会出现乱码。
作者: WHY    时间: 2016-3-27 12:32

回复 15# ygqiang


    我很好奇,你的测试环境是什么?你的测试数据和测试方法又是什么?楼上一堆的代码你测试了几个?
作者: ygqiang    时间: 2016-3-27 13:53

回复 16# WHY


    win7 64系统环境下。
你的代码,测试就是有问题。生成新的txt,里面有乱码。
  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>>test.txt
  5.         set _%%i=1
  6.     )
  7. )
  8. pause
复制代码

作者: WHY    时间: 2016-3-27 14:35

回复 17# ygqiang


    大哥,你那是utf-8的好不?
作者: WHY    时间: 2016-3-27 14:39

装逼:
  1. PowerShell -c "(get-Content 1.txt)+(get-Content 2.txt)|sort -Unique|out-file 3.txt"
复制代码

作者: bailong360    时间: 2016-3-27 17:51

10楼gawk的多好
  1. cat 1.txt 2.txt|sort -u >3.txt
复制代码

作者: codegay    时间: 2016-3-27 18:56


其实,可以不搞合并这些配置文件,
一般自己用的软件也就那几个,自己手动添加屏蔽后,建立起来的规则是完全针对自己的.
作者: ygqiang    时间: 2016-3-27 19:43

回复 21# codegay


    多谢。。你推荐的那个软件,太好用了。。
作者: ygqiang    时间: 2016-3-27 20:04

回复 18# WHY


    多谢。。




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