XP自带的功能强大的搜索工具

大家都知道UNIX下有一个利用正规表达式检索文本的工具:grep, 其实在XP下也带了一个类似的工具:findstr, 只是只支持正规表达式的几个功能, 下面是它的帮助......

出自:http://www.oioj.net/blog/user2/25100/archives/2005/154482.shtml

大家都知道UNIX下有一个利用正规表达式检索文本的工具:grep, 其实在XP下也带了一个类似的工具:findstr, 只是只支持正规表达式的几个功能, 下面是它的帮助:

语法

findstr [/b] [/e] [/l] [/r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/offline] [/g:file] [/f:file] [/c:string] [/d:dirlist] [/a:ColorAttribute] [strings] [[Drive:][Path] FileName [...]]

参数

/b
如果位于行的开头则匹配模式。
/e
如果位于行的末尾则匹配模式。
/l
使用文字搜索字符串。
/r
使用搜索串作为常规表达式。Findstr 将所有元字符解释为常规表达式,除非使用了 /l
/s
在当前目录和所有子目录中搜索匹配的文件。
/i
指定搜索不区分大小写。
/x
打印完全匹配的行。
/v
只打印不包含匹配的行。
/n
在每个匹配的行之前打印行号。
/m
如果文件包含匹配项,仅打印该文件名。
/o
在每次匹配行之前打印查找偏移量。
/p
跳过包含非可打印字符的文件。
/offline
利用脱机属性设置处理文件。
/f:file
从指定文件中读取文件列表。
/c:string
使用指定的文本作为文字搜索字符串。
/g:file
从指定文件得到搜索字符串。
/d:dirlist
搜索以逗号分隔的目录列表。
/a:ColorAttribute
使用两个十六进制数指定颜色属性。
strings
指定要在 FileName 中搜索的文本。
[Drive:][Path] FileName [...]
指定要搜索的文件。
/?
在命令提示符显示帮助。

注释

  • findstr 中使用常规表达式

    Findstr 可以在任何 ASCII 文件或文件中精确查找所要查找的文本。然而,有时要匹配的信息只有一部分或需要查找更宽广的信息范围。在这种情况下,findstr 具有使用常规表达式搜索各种文本的强大功能。

    常规表达式是用于指定文本类型的符号,与精确的字符串相反。标记使用文字字符和元字符。每个在常规的表达式语法中没有特殊意义的字符都是文字字符,与出现的该字符匹配。例如,字母和数字是文字符号。元字符是在常规表达式语法中具有特殊意义(操作符或分隔符)的符号。

    下表列出 findstr 接受的元字符。

    字符
    . 通配符:任何字符
    * 重复:以前字符或类的零次或多次出现
    ^ 行位置:行的开始
    $ 行位置:行的结尾
    [class] 字符类:集合中任何一个字符
    [^class] 反类:不在集合中的任何一个字符
    [x-y 范围:范围:指定范围内的任何字符
    \x 取消:元字符 x 的文字用途
    \<xyz 字位置:字首
    xyz> 字位置:字尾

    常规表达式语法的特殊字符在一起使用时功能最强大。例如,以下匹配任意字符串的通配符 (.) 和重复符 (*) 的组合:

    .*

    将如下表达式用作匹配以“b”开头并以“ing”结尾的任何字符串的更大表达式的组成部分:

    b.*ing

范例

用空格分隔多个搜索字符串,除非参数以 /c 为前缀。要在文件 x.y 中搜索“hello”或“there”,请键入:

findstr "hello there" x.y

要在文件 x.y 中搜索“hello there”,请键入:

findstr /c:"hello there" x.y

要查找文件 Proposal.txt 中出现的所有单词“Windows”(首字母 W 大写),请键入:

findstr Windows proposal.txt

要搜索包含单词 Windows 的当前目录和所有子目录中的每个文件,不考虑字母大小写,请键入如下命令:

findstr /s /i Windows *.*

要查找包含字“FOR”的所有行(前面可有任意数量的空格,如:计算机程序中的循环),并包括每次出现的行号,请键入:

findstr /b /n /c:"*FOR" *.bas

如果要在相同组文件中搜索几个不同项目, 请创建在新行上包含每个搜索标准的文本文件。也可以列出要在文本文件中搜索的确切文件。要使用文件 Finddata.txt 中的搜索条件,请搜索 Filelist.txt 中列出的文件,然后将结果保存到文件 Results.out 中,请键入:

findstr /g:finddata.txt /f:filelist.txt > results.out

假设您想要找到当前目录和所有子目录中每个包含“computer”这个单词的文件,而不考虑字母的大小写。要列出包含单词“computer”的所有文件,请键入:

findstr /s /i /m "\<computer\>" *.*

现在假定不仅需要查找字“computer”,而且需要查找以字母“comp”开头的所有其他字,例如“compliment”和“compete”。请键入:

findstr /s /i /m "\<comp.*" *.*

也可以通过管道进行文件查找, 例如查找当前目录及子目录下的所有文件名为数字的文本文件:

dir /s | findstr /i "[0-9]*\.txt"

还可以和其它命令一起使用以对其输出进行过滤, 例如查看当前机器所有监听的TCP:端口

netstat -an -p tcp | findstr /i "listening"

Monthly Archives

Pages

Powered by Movable Type 7.7.2

About this Entry

This page contains a single entry by Cnangel published on October 21, 2007 2:31 PM.

终于尝试了Fedora7 was the previous entry in this blog.

关于DBI的一点忽略的东西 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.