[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理比对两个文本文件出错了,求助问题出在那?

曾经在之前的贴子中,求助过比对两个文本文件中不同名称的行,一直用着没有问题。只前的贴子:http://www.bathome.net/viewthread.php?tid=66449&highlight=
但是我今天再比对,两个文本文件的时候,就发现出错了,比对不出来,明明有7行是不同的,但就是找不出来,我手工找了4个出来,高手帮我看看问题出在那里,我全部打包上传到附近中去。

附件下载:
https://netcut.cn/api/file/downl ... nfizs22xzsu8s5c5tr1
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 1# thp2008
  1. gawk "NR==FNR{if(!($0 in T)){a[++i]=$0;T[$0]=1}next}!($0 in T){a[++i]=$0;T[$0]=2;next}$0 in T{if(T[$0]==1){T[$0]=3}}END{for(j=0;j++<i;){if(0+T[a[j]]<3){print a[j]}}}" Full.txt BiDui.txt>out.txt
复制代码
结果(out.txt)
  1. 棕颈鸭
  2. 丑鸭
  3. 弗氏鸥
  4. 黑顶林莺
  5. 灰翅鸥
  6. 梯氏鸫
  7. 细纹苇莺
复制代码
不知道是否满足要求?

另简版(特例:BiDui.txt 是 Full.txt 的子集时):
  1. gawk "NR==FNR{a[$0]++;next}!a[$0]++" BiDui.txt Full.txt>out.txt
复制代码
1

评分人数

TOP

写反了吧,两个文本。
  1. @echo off
  2. mode con cols=60 lines=41
  3. chcp 65001
  4. set "file1=1.txt"
  5. set "file2=2.txt"
  6. call :1 "%file1%" "%file2%"
  7. call :1 "%file2%" "%file1%"
  8. pause>nul & exit
  9. :1
  10. setlocal
  11. set n=0
  12. echo 以下字符串 仅在 %~2 中存在
  13. for /f "usebackq delims=" %%a in ("%~1") do (
  14. set _"%%a"=1
  15. )
  16. for /f "usebackq delims=" %%a in ("%~2") do (
  17. if not defined _"%%a" (
  18. echo %%a
  19. set /a n+=1
  20. )
  21. )
  22. echo Total number of bird species: %n%
  23. echo=&echo=
  24. endlocal
复制代码
1

评分人数

    • thp2008: 你这样写,运行成功,感谢技术 + 1
bat小白,请多指教!谢谢!

TOP

返回列表