Board logo

标题: [已结]请问如何查找不包含的多个字符串 [打印本页]

作者: slbawy     时间: 2008-11-4 10:28    标题: [已结]请问如何查找不包含的多个字符串

我想在一个文件中同时查字多个不含例如”AA“,”BB“,”CC“的字符串,然后把不包括上述字符串的内容生成一个新文件,请问该如何编写,谢谢!!

[ Last edited by HAT on 2008-11-7 at 00:21 ]
作者: HAT     时间: 2008-11-4 17:05

findstr /v "AA BB CC" "a.txt">"b.txt"

作者: slbawy     时间: 2008-11-4 21:18
谢谢HAT版主解答,但字符串变成文字后,执行批处理后与原文件的记录是相同的
例:A.TXT
五一
六一
十一
八一
批处理:findstr /v "五一 六一 十一" "a.txt">"b.txt"
但B.TXT的结果仍为
五一
六一
十一
八一
作者: slbawy     时间: 2008-11-6 15:31
请高手解答
作者: tireless     时间: 2008-11-6 15:51
这样:
findstr /v "五一.* 六一 十一" a.txt
为什么要改成这样我也不知道。我试出来的。
而你说的换成中文又无效确实很奇怪。。
作者: slbawy     时间: 2008-11-6 22:14
感谢tireless朋友的解答,已成功解决了

但还要请教一下,这个".* "的含义代表什么,谢谢
作者: tireless     时间: 2008-11-6 22:20    标题: Re 6 楼



  Quote:
C:\>findstr /?
在文件中寻找字符串。

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B        在一行的开始配对模式。
  /E        在一行的结尾配对模式。
  /L        按字使用搜索字符串。
  /R        将搜索字符串作为一般表达式使用。
  /S        在当前目录和所有子目录中搜索
              匹配文件。
  /I         指定搜索不分大小写。
  /X        打印完全匹配的行。
  /V        只打印不包含匹配的行。
  /N        在匹配的每行前打印行数。
  /M        如果文件含有匹配项,只打印其文件名。
  /O        在每个匹配行前打印字符偏移量。
  /P        忽略有不可打印字符的文件。
  /OFF[LINE] 不跳过带有脱机属性集的文件。
  /A:attr   指定有十六进位数字的颜色属性。请见 "color /?"
  /F:file   从指定文件读文件列表 (/ 代表控制台)。
  /C:string 使用指定字符串作为文字搜索字符串。
  /G:file   从指定的文件获得搜索字符串。 (/ 代表控制台)。
  /D:dir    查找以分号为分隔符的目录列表
  strings   要查找的文字。
  [drive:][path]filename
            指定要查找的文件。

除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there" 。  'FINDSTR /C:"hello there" x.y' 文件 x.y  寻找
"hello there"。

一般表达式的快速参考:
  .        通配符: 任何字符
  *        重复: 以前字符或类别出现零或零以上次数

  ^        行位置: 行的开始
  $        行位置: 行的终点
  [class]  字符类别: 任何在字符集中的字符
  [^class] 补字符类别: 任何不在字符集中的字符
  [x-y]    范围: 在指定范围内的任何字符
  \x       Escape: 元字符 x 的文字用法
  \<xyz    字位置: 字的开始
  xyz\>    字位置: 字的结束

有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。

在这个帖子中为什么要这么用,我也不太明白。