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

[文本处理] 批处理如何把重复的行只保留一次?

[复制链接]
发表于 2016-2-27 16:28:39 | 显示全部楼层 |阅读模式
a.txt内容如下:
123
456
789
123
123
789

获取重复的行,并且重复的行只保留一次,处理后得到b.txt内容如下:
123
789
————————————————————————
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set /a _%%i+=1
  4. )
  5. (for /f "tokens=1-2 delims=_=" %%i in ('set _') do (
  6.     if %%j gtr 1 (
  7.         echo,%%i
  8.     )
  9. ))>b.txt
复制代码
这段代码可以用,但是我没看懂,第二个for中 'set _' 单引号里面是命令,但如果单独执行 set_是执行不了的,求点拨
发表于 2016-2-27 16:47:17 | 显示全部楼层
回复 1# ngd
set_  显示所有_开头的变量

set /a _%%i+=1  变量赋值前面带_,如果有重复的结果肯定大于1,就可以得出结果了
 楼主| 发表于 2016-2-27 19:39:23 | 显示全部楼层
回复 3# ivor

set_  显示所有_开头的变量

原来还有这样的用法  顿悟 万分感谢!
发表于 2016-2-28 14:16:08 | 显示全部楼层
for /f "delims=" %%i in ('type "%~f1"')do if not defined %%i (
set "%%i=y"
(echo,%%i)>>"%~dp1new_%~nx1"
)
有局限性谨慎使用
发表于 2016-2-29 06:10:45 | 显示全部楼层
  1. """
  2. 获取重复的行并且重复的行只保留一次.py
  3. http://bbs.bathome.net/thread-39502-1-1.html
  4. 2016年2月28日 03:57:29 codegay
  5. 通过help(list),可见python序列有count方法.
  6. -_-基础教程应该有说到的,估计是学过就忘记了.
  7. python3
  8. """
  9. #a.txt内容必须是任意但是有重复行的内容。
  10. #我使用的是一列IP地址进行测试的.
  11. with open("a.txt") as f:
  12.     txt=f.readlines()

  13. #方法一 集合解析,缺点集合无序,不会保持原来的先后顺序
  14. results={r for r in txt if (txt.count(r) >= 2)}
  15. print("一:",results)

  16. #方法二 map filter lambda ,
  17. b=[]
  18. a=map(lambda y:b.append(y) if (y not in b) else None,filter(lambda x:(txt.count(x) >= 2),txt))
  19. list(a)#python3中map等函数返回成生成器,需要list或者for 历遍到的时候才进行计算结果。
  20. print("二:",b)

  21. #方法三
  22. l2=[r for r in txt if txt.count(r)>=2]
  23. result3=[]
  24. [result3.append(r) for r in l2 if r not in result3]
  25. print("三:",result3)

  26. #方法4 字典 不保持原先后顺序
  27. dd={r:txt.count(r) for r in txt}
  28. ll=[k for k,v in dd.items() if v>=2]
  29. print("4",ll)
复制代码
 楼主| 发表于 2016-5-9 15:07:36 | 显示全部楼层
回复 4# /zhqsystem/zhq


    局限性在哪?
发表于 2016-5-9 20:51:36 | 显示全部楼层
回复 6# ngd
变量设置判断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 16:03 , Processed in 0.017652 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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