Board logo

标题: [文本处理] findstr命令怎样对比含特殊字符的文本? [打印本页]

作者: bluewing009    时间: 2011-8-16 13:41     标题: 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 的不同。
作者: CUer    时间: 2011-8-16 19:23

如何处理?希望得到什么结果?实际得到什么结果?
作者: bluewing009    时间: 2011-8-16 21:25

回复 2# CUer


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

     不支持含有特殊字符的文本
作者: CUer    时间: 2011-8-16 21:30

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
作者: bluewing009    时间: 2011-8-16 22:11

回复 4# CUer

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



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

   

会如何?
作者: CUer    时间: 2011-8-16 22:55

回复 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>
作者: bluewing009    时间: 2011-8-17 22:49

为什么我在win7下的返回结果总是为空呢?…………
作者: CrLf    时间: 2011-8-17 22:52

回复 8# bluewing009


    可否上传样本?
作者: bluewing009    时间: 2011-8-19 07:41

回复  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
作者: CrLf    时间: 2011-8-19 16:49

恭喜楼主,估计碰到了传说中的 \ bug
作者: bluewing009    时间: 2011-8-20 10:03

回复 11# CrLf


   额...那么你有什么好点的办法么?
作者: CrLf    时间: 2011-8-20 15:05

回复 12# bluewing009


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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2