标题: [文件操作] 批处理如何合并两个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
已加入换行- @echo off
- echo,>>1.txt
- echo,>>2.txt
- findstr /vig:2.txt 1.txt>new.txt
- findstr .* 2.txt>>new.txt
- pause
复制代码
作者: ygqiang 时间: 2016-3-26 22:16
回复 5# happy886rr
多谢。。。- copy 1.txt+2.txt test.txt
-
-
- @echo off
- for /f "delims=" %%i in (test.txt) do (
- 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
- @echo off
- for /f "delims=" %%i in ('find /v "" ^< 1.txt ^& type 2.txt') do (
- if not defined _%%i (
- echo;%%i
- set _%%i=1
- )
- )
- pause
复制代码
作者: pcl_test 时间: 2016-3-26 22:30
第三方- gawk "{if(!($0 in a)){print};a[$0]}" 1.txt 2.txt>3.txt
复制代码
作者: CrLf 时间: 2016-3-26 23:50
- gawk "!a[$0]++" 1.txt 2.txt>3.txt
复制代码
作者: pcl_test 时间: 2016-3-26 23:55
本帖最后由 pcl_test 于 2016-8-18 22:00 编辑
- //&cls&cscript -nologo -e:jscript "%~f0" "1.txt" "2.txt"&pause&exit
- var s = '', a = {}, files = WScript.Arguments;
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- for (var i = 0; i<files.length; i++){
- var f = fso.opentextfile(files(i), 1);
- while(!f.AtEndOfStream){
- var str = f.ReadLine();
- if(!a[str]){
- a[str] = 1;
- s += str+'\r\n';
- //数据太大的话还是逐行输出吧 WSH.echo(str);
- }
- }
- f.Close();
- }
- WSH.echo(s);
复制代码
作者: codegay 时间: 2016-3-27 00:07
== ygqiang 是版主小号...?
名字都跑到版主签名档里了.
作者: codegay 时间: 2016-3-27 00:51
本帖最后由 codegay 于 2016-3-27 01:55 编辑
- """
- python文件去重合并.py
- 2016年3月27日 00:34:36 codegay
- """
- 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:
- result.writelines(list(frozenset(f1.readlines()+f2.readlines())))
复制代码
作者: codegay 时间: 2016-3-27 03:26
本帖最后由 codegay 于 2016-3-27 09:12 编辑
- #="""
- julia文本文件合并去重.jl
- http://bbs.bathome.net/thread-39822-1-1.html
- 2016年3月27日 01:02:58 codegay
- """=#
- f1=open("1.txt")
- txt1=readlines(f1)
- txt2=readlines(open("2.txt"))
- txt=vcat(txt1,txt2) #以readlines取读文件流,vcat连接两个Array,julia不支持+号连接字符串和数组,支持$符内插
- @show length(txt)
- result=unique(txt) #内置函数unique去重
- #result=Set(txt) Set()方法把数组转为集合,集合中的元素唯一,Set是首字母大写的!
- @show length(result)
- write(open("result.txt","w+"),result) #与python不同,julia把数组写入文件不需要wirtelines
复制代码
#装B一行流- write(open("result.txt","w+"),unique(vcat(readlines(open("1.txt")),readlines(open("2.txt")))))
复制代码
- #julia管道一行流
- #union("1.txt"|>open|>readlines,"2.txt"|>open|>readlines)|> xxx ->write(open("result.txt","w"),xxx);
- 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,里面有乱码。- @echo off
- for /f "delims=" %%i in ('find /v "" ^< 1.txt ^& type 2.txt') do (
- if not defined _%%i (
- echo;%%i>>test.txt
- set _%%i=1
- )
- )
- pause
复制代码
作者: WHY 时间: 2016-3-27 14:35
回复 17# ygqiang
大哥,你那是utf-8的好不?
作者: WHY 时间: 2016-3-27 14:39
装逼:- PowerShell -c "(get-Content 1.txt)+(get-Content 2.txt)|sort -Unique|out-file 3.txt"
复制代码
作者: bailong360 时间: 2016-3-27 17:51
10楼gawk的多好- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |