中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]关于有特殊字符的文本对比如何只输出不现处
作者:
标题: [已解决]关于有特殊字符的文本对比如何只输出不现处 上一主题 | 下一主题
luckywlx
新手上路





积分 14
发帖 9
注册 2007-10-10
状态 离线
『楼 主』:  [已解决]关于有特殊字符的文本对比如何只输出不现处

由于我的原文件是有殊字符,结果一直显示出错,
别外对比文件比较大,速度很慢,不知是否有解决办法。

付上原文件
old.txt(内容)
lucky_01@163.com"okgo_01
lucky_02@163.com"okgo02-
lucky_03@163.com"okgo*03
lucky_04@163.com"okgo04(

new.txt(内容)
lucky_04@163.com"okgo04(
lucky_01@163.com"okgo_01
lucky_03@163.com"okgo*03
lucky_05@163.com"okgo05
lucky_02@163.com"okgo02-

以上2个文件只有“lucky_05@163.com"okgo05”这个字符串是不一样的
如果得到并输出它?

OK.txt(内容)
lucky_05@163.com"okgo05



以下为原内容

  Quote:
A.txt(内容)

AAA
222
111
333


B.txt(内容)

BBB
111
333
AAA
222

以上2个文件只有“BBB”这个字符串是不一样的
如果得到并输出它?

C.txt(内容)
BBB

[ Last edited by luckywlx on 2007-12-19 at 01:09 PM ]

2007-12-16 14:41
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 2 楼』:  

之前看过一位DX的命令:
findstr /xvg:a.txt b.txt>>c.txt
注:最后一行必须换行为空行,否则和最后一行会出错



2007-12-16 15:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
luckywlx
新手上路





积分 14
发帖 9
注册 2007-10-10
状态 离线
『第 3 楼』:  

谢谢楼上的,我找了一个大大的代码改的,也可以哦

  Quote:
@echo off
cd.>ok.txt
for /f "tokens=*" %%i in (new.txt) do (
    find "%%i" old.txt || >>ok.txt echo %%i
)
start ok.txt



2007-12-16 15:07
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
luckywlx
新手上路





积分 14
发帖 9
注册 2007-10-10
状态 离线
『第 4 楼』:  

由于我的原文件是有特特殊字符,结果一直显示出错,
别外对比文件比较大,速度很慢,不知是否有解决办法。

付上原文件
old.txt(内容)
lucky_01@163.com"okgo_01
lucky_02@163.com"okgo02-
lucky_03@163.com"okgo*03
lucky_04@163.com"okgo04(

new.txt(内容)
lucky_04@163.com"okgo04(
lucky_01@163.com"okgo_01
lucky_03@163.com"okgo*03
lucky_05@163.com"okgo05
lucky_02@163.com"okgo02-

以上2个文件只有“lucky_05@163.com"okgo05”这个字符串是不一样的
如果得到并输出它?

OK.txt(内容)
lucky_05@163.com"okgo05

2007-12-16 15:47
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
luckywlx
新手上路





积分 14
发帖 9
注册 2007-10-10
状态 离线
『第 5 楼』:  

顶一下,请大大帮忙

2007-12-16 17:50
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  


gawk "NR==FNR{a[$0]=$0};NR!=FNR{if(!($0 in a))print $0}" old.txt new.txt > OK.txt


2007-12-16 20:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckywlx
新手上路





积分 14
发帖 9
注册 2007-10-10
状态 离线
『第 7 楼』:  

谢谢版主回答,但试了无用?

2007-12-17 09:23
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  

TO luckywlx:

你没有gawk这个外部工具吧?

网上搜索下载一个。

2007-12-17 11:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckywlx
新手上路





积分 14
发帖 9
注册 2007-10-10
状态 离线
『第 9 楼』:  

谢谢版版,下载后,的确可以,感谢
别外gawk可以去重复行吗

2007-12-18 17:19
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 10 楼』:  

可以。

Gawk "!a[$0]++" urfile

2007-12-18 19:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckywlx
新手上路





积分 14
发帖 9
注册 2007-10-10
状态 离线
『第 11 楼』:  

Gawk "!a[$0]++" ok.txt
只能显示结果,如何直接写入ok.txt

我试了
Gawk "!a[$0]++" ok.txt > oknew.txt可以成功

再次麻烦版主一下

[ Last edited by luckywlx on 2007-12-18 at 07:47 PM ]

2007-12-18 19:46
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: