入门命令13-字符串查找增强:findstr
学了find之后,也许你就会发现,find的但找字符串能力有限..那么,就来看一看它的增强版:
1 在文件中寻找字符串。
2
3 FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
4 [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
5 strings [[drive:][path]filename[ ...]]
6
7 /B 在一行的开始配对模式。 beginning of a line
8 /E 在一行的结尾配对模式。 end of a line
9 /L 按字使用搜索字符串。 literally
10 /R 将搜索字符串作为一般表达式使用。regular expressions
11 /S 在当前目录和所有子目录中搜索 current directory and all subdirectories
12 匹配文件。
13 /I 指定搜索不分大小写。ignore case-sensitive
14 /X 打印完全匹配的行。 exactly
15 /V 只打印不包含匹配的行。invert-match即反转匹配
16 /N 在匹配的每行前打印行数。 Prints the line number
17 /M 如果文件含有匹配项,只打印其文件名。a file contains a match.
18 /O 在每个匹配行前打印字符偏移量。character offset
19 /P 忽略有不可打印字符的文件。non-printable characters.
20 /OFF[LINE] 不跳过带有脱机属性集的文件。offline attribute set.
21 /A:attr 指定有十六进位数字的颜色属性。请见 "color /?" Specifies color attribute with two hex digits.
22 /F:file 从指定文件读文件列表 (/ 代表控制台)。Reads file list from the specified file
23 /C:string 使用指定字符串作为文字搜索字符串。 specified string as a literal search string(charactor)
24 /G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。Gets search strings from the specified file
25 /D:dir 查找以分号为分隔符的目录列表 list of directories
26 strings 要查找的文字。
27 [drive:][path]filename
28 指定要查找的文件。
29
30 除非参数有 /C 前缀,请使用空格隔开搜索字符串。
31 例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
32 "there" 。 'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找
33 "hello there"。
34
35 一般表达式的快速参考:
36 . 通配符: 任何字符
37 * 重复: 以前字符或类别出现零或零以上次数
38 ^ 行位置: 行的开始
39 $ 行位置: 行的终点
40 [class] 字符类别: 任何在字符集中的字符
41 [^class] 补字符类别: 任何不在字符集中的字符
42 [x-y] 范围: 在指定范围内的任何字符
43 \x Escape: 元字符 x 的文字用法
44 \<xyz 字位置: 字的开始
45 xyz\> 字位置: 字的结束
46
47 有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。
注意:因为cmd中帮助基本是机器翻译,这里"一般表达式" 其实就是正则表达式.
这个命令看起来比较复杂,其实除去正则表达式部分(^-^但用起正则才是精华部分),其他也很简单.实际演练几次就熟悉了
1.普通用法
1 rem 建立一个测试文件
2 C:\Documents and Settings\doupi>copy con test.txt
3 doupip
4 DOUPIP
5 this is doupip
6 test^Z
7 已复制 1 个文件。
8
9 rem 默认大小写区分是打开的.它的结果返回也是以行为单位,与find一样滴
10 C:\Documents and Settings\doupi>findstr "doupip" test.txt
11 doupip
12 this is doupip
13
14 rem 不区分大小写,并显示出行号
15 C:\Documents and Settings\doupi>findstr /i /n "doupip" test.txt
16 1:doupip
17 2:DOUPIP
18 3:this is doupip
19
20
21 rem 如果要搜索的字符串中间有空格,用参数/c来指定字符串
22 C:\Documents and Settings\doupi>findstr /c:"is doupip" test.txt
23 this is doupip
2. 基本上帮助列出来的参数都是比较有用的,具体的试一下就明白了.这里不一一举例了,只是对少许作一下说明:
/r 正则模式 其实findstr本身已经是默认正则模式,一般就不用在使用中加它了.
/l 普通模式 即把findstr切回普通字符串的匹配模式,用法就与find差不多了.
/x 完全匹配,这个有点小用...与正则^string$ 是一个意思(达到同样的目的,可以用多种方法)
/a /f /c /g /d 也都有用,频率高些的大概是 /c /g /d 其中/d是一个列表,多个目录之间用分号来隔开.
3. 正则表达式(就是用来匹配字符串的,很多地方有用)
因为涉及的内容比较多,这里就不详细讲了,可以参考一下其他的资料.如:
1.什么是正则表达式:http://zh.wikipedia.org/zh/%E6%A ... 8%E8%BE%BE%E5%BC%8F
2.正则表达式30分钟入门教程(非常好的教程,极力推荐):http://deerchao.net/tutorials/regex/regex.htm
OK,此篇完毕.