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

[文本处理] findstr命令怎样对比含特殊字符的文本?

findstr命令利用/v /g 参数可以做到文本对比但是发现在处理以下格式的文本时无法得出正确结果


文本格式举例
  1. A:b:C \0001 1111\ -X -Y -Z
  2. D\E F \(HHH) /IJK
  3. LM.NOPQ\ RS (T) /UV -W
复制代码
感觉 特殊字符影响的findstr 随即想利用替换方式先进行替换然后对比,最后替换回来
但是这个方式似乎有些绕,希望大家能给出个更好的思路(注:请尽量不要使用第三方工具)
如果说利用for if的话,没有特殊这么个问题,但是工作量为n^n行。
补充方法

目前使用的方法:
for /f "delims=/ tokens=*" 屏蔽掉敏感字符(但是这样过滤掉的是否一致就不得而知了)
然后利用  find "%%i" 1.txt||echo %%i>>2.txt 找出1-2不同
反过来在用一次 找出 2-1 的不同。

如何处理?希望得到什么结果?实际得到什么结果?

TOP

回复 2# CUer


   1.如何处理?     能够对比还有 / - 等特殊字符的文本   2.希望得到什么结果?
      文本对比找出不同
   3.实际得到什么结果?

     不支持含有特殊字符的文本

TOP

a.txt
file a
abcd efg /h /i -j -k


b.txt
file b
abcd efg /h /i -j -k


c:\Test>findstr /g:a.txt b.txt
abcd efg /h /i -j -k

c:\Test>findstr /v /g:a.txt b.txt
file b

TOP

回复 4# CUer

额 那么你试试a.txt
  1. abcd efg /h /i -j -k
复制代码



b.txt
  1. abcd efg /h /i -j -ks
复制代码

   

会如何?

TOP

回复 5# bluewing009


一切正常

c:\Test>findstr /g:a.txt b.txt
abcd efg /h /i -j -ks

c:\Test>findstr /v /g:a.txt b.txt

c:\Test>

TOP

为什么我在win7下的返回结果总是为空呢?…………

TOP

回复 8# bluewing009


    可否上传样本?

TOP

回复  bluewing009


    可否上传样本?
CrLf 发表于 2011-8-17 22:52


回复 9# CrLf

1.txt
  1. Ab:C \0001 1111\ -X -Y -Z
  2. D\E F \(HHH) /IJK
  3. LM.NOPQ\ RS (T) /UV -W
复制代码

2.txt为1.txt稍微改变
比如
  1. A:b:C \0001 1111\ -X -Y -Z
  2. D\E F \(HHH) /IJKs
  3. LM.NOPQ\ RS (T) /UV -W
  4. THis IS -a /test
复制代码

那么希望得到的结果:
D\E F \(HHH) /IJKs
THis IS -a /test

TOP

恭喜楼主,估计碰到了传说中的 \ bug

TOP

回复 11# CrLf


   额...那么你有什么好点的办法么?

TOP

回复 12# bluewing009


    把 a.txt 中的 \ 替换成 \\ 试试?

TOP

返回列表