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

回复 4# Batcher

这个方法很简单,但有不明白之处,求解。具体如下:
测试文件1.txt及2.txt均已保存为ANSI编码,
1.txt
  1. 203.208.39.194
  2. 203.208.40.66
  3. 220.181.174.226 translate.googleapis.com
  4. #
复制代码
2.txt(含空行,在第3行)
  1. 203.208.39.194
  2. 203.208.40.66
  3. translate.google.cn
  4. #
复制代码
测试如下:
  1. grep -xFf 1.txt 2.txt > Same1.txt
  2. grep -xFf 2.txt 2.txt > Same2.txt
  3. grep -vxFf 1.txt 2.txt > Diff1.txt
  4. grep -vxFf 2.txt 2.txt >  Diff2.txt
复制代码
结果如下:
Same1.txt(正确
  1. 203.208.39.194
  2. 203.208.40.66
  3. #
复制代码
Same2.txt(错误
  1. 203.208.39.194
  2. 203.208.40.66
  3. translate.google.cn
  4. #
复制代码
Diff1.txt(错误
  1. translate.google.cn
复制代码
俺的理解Diff1.txt应为
  1. 220.181.174.226 translate.googleapis.com
  2. translate.google.cn
复制代码
Diff2.txt(为空)(错误
俺的理解应为
  1. translate.google.cn
  2. 220.181.174.226 translate.googleapis.com
复制代码

TOP

回复 1# 881966

如接受第3方工具gawk( http://bcn.bathome.net/tool/4.1.3/gawk.exe ),如下指令经测试正常(结果文档中已去除重复行,但其次序可能不一定是原文件次序)
  1. awk "NR==FNR{a[$0]++;next}a[$0]{a[$0]=0;print}" 1.txt 2.txt>Same.txt
  2. awk "NR==FNR{a[$0]=1;next}!a[$0]++{print $0;a[$0]++}END{for(i in a)if(a[i]==1)print i}" 1.txt 2.txt>Diff.txt
复制代码
1

评分人数

TOP

返回列表