http://bathome.l3.wuyou.com/thread-11159-1-6.html
/B 在一行的开始配对模式。——只在行开头搜索。
/E 在一行的结尾配对模式。——只在行结尾搜索。 /L 按字使用搜索字符串。——具体不详,可以与 /r 参数替换测试。 /R 将搜索字符串作为一般表达式使用。——当命令成功而搜索失败时(某些中文字符搜索,类似 /I 参数),可以试试这个参数。 /S 在当前目录和所有子目录中搜索匹配文件。——这个没啥说的,搜索程序所在目录内的所有位置。 /I 指定搜索不分大小写。——搜索英文时注意。 /X 打印完全匹配的行。——只有搜索到的行与搜索词一致时显示结果。 /V 只打印不包含匹配的行。——与 /X 参数相反,如果行中没包含搜索词就显示。 /N 在匹配的每行前打印行数。——这个可以用来获得一个文本由多少行,并可以与FOR、if等组合定位行。 /M 如果文件含有匹配项,只打印其文件名。——用于搜索文件,搜索到含有关键词的文件时,就显示文件名。 /O 在每个匹配行前打印字符偏移量。——没用过,偏移量应该和SET的截取差不多吧,大大们解释下。 /P 忽略有不可打印字符的文件。——我很少用。 /OFF[LINE] 不跳过带有脱机属性集的文件。。——我很少用。 /A:attr 指定有十六进位数字的颜色属性。请见 “color /?”——搜索到文件时用色彩显示出来,很有用。 /F:file 从指定文件读文件列表 (/ 代表控制台)。——应该是与 /G:file 参数相对,也就是从文本中搜索字符时,该文本可以预先写入一个文本中,然后类似FOR的读取。似乎是这样。 /C:string 使用指定字符串作为文字搜索字符串。——我很少用。 /G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。——FIndstr可以将搜索关键词写入到一个文本中,然后一次性的用该文本获取关键词进行搜索,类似FOR。
/D:dir 查找以分号为分隔符的目录列表。——使用findstr /n的结果会以分号分隔,此时该命令应该起作用,没用过。
findstr /b “test” test.txt
会搜索出test123这一行,而不会搜索出123test这一行,/e与此类似。 /l和/r:望高手补充 /s:在当前目录和所有子目录中搜索匹配文件,与通配符搭配功能强大,如 findstr /s “test” *.txt
会搜索当前目录和其所有子目录下的文本文件,打印出含有字符串”test“的所有行,打印结果前会有文件路径和文件名,形如: test\test.txt:test123 test\test.txt:123test
/i:指定搜索不分大小写,搜索字符串是不分大小写的,如: findstr /i “abc” test.txt
文本中像”123ABC”这样的行也会被列出。 /x:打印完全匹配的行,就是该行必须只含有搜索字符串才能匹配,”跟正则表达式的”^字符串$”功能类似,如: findstr /x “test” test.txt
会打印”test“这行,而不会打印”test123”这行。 /v:只打印不包含匹配的行,很好理解,就是含有搜索字符串的行不打印,不含有搜索字符串的行打印,如: findstr /v “123” test.txt
所有不包含字符串”123″的行都会被打印出来。跟正则表达式中的^作用类似。 /n:在匹配的每行前打印行数,看看执行结果就知道什么意思了: findstr /n “test” test.txt
执行结果为: 1:test123 2:123test
也就是在找到的每行前加上行号(该行在该文件中位于哪行),用冒号分隔。 /o:在每行前打印字符偏移量,在找到的每行前打印该行首距离文件开头的位置,也就是多少个字符,如test.txt中有如下内容: aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa
执行命令: findstr /0 .* test.txt ::上一行中的.*为正则表达式的内容,表示任意行,包含空行
结果如下: 0:aaaaaaaaaa 12:aaaaaaaaaa 24:aaaaaaaaaa 36:aaaaaaaaaa 48:aaaaaaaaaa
注意每行末尾的回车换行符算两个字符。
/a:当被搜索文件名中含有通配符*或?时对搜索结果的文件名部分指定颜色属性,具体颜色值参见color帮助: 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 浅绿色 B = 淡浅绿色 4 = 红色 C = 淡红色 5 = 紫色 D = 淡紫色 6 = 黄色 E = 淡黄色 7 = 白色 F = 亮白色 常用于彩色显示,举个简单的例子,想要彩色显示“批处理之家”怎么办,假如当前的color设置为27(背景绿色,字体白色),用蓝色显示“批处理之家”咋办? ::下一行的退格符可以在cmd的编辑模式下按ctrl+p后按退格键获得 >”批处理之家” set /p=<nul findstr /a:21 .* “批处理之家*” pause
代码中的退格符是为了让显示的内容仅为”批处理之家”,如果有其他内容,在彩色显示的”批处理之家”后还有一个冒号和其他内容,退格符正好将冒号删除。注意代码中的通配符是必须的。 /f:从指定文件读文件列表,事先可以将待搜索的文件放在一个文本文件中,每个文件放在一行,findstr命令在执行时会到文本文件中去找这些待搜索的文件,假如当前目录下有一文本文件list.txt中内容如下: 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
且当前目录下有这些文件,文件内容都是123456789,那么执行下列命令: findstr /f:list.txt “1”
结果如下: 1.txt:123456789 2.txt:123456789 3.txt:123456789 4.txt:123456789 5.txt:123456789 6.txt:123456789 7.txt:123456789 8.txt:123456789 9.txt:123456789
看了这个例子相信你也明白了这个开关的作用。 /m:如果文件含有匹配项,只打印其文件名,而且还会打印路径,意思很好理解,如: findstr /s /m “123” *.txt
会找出当前目录和其所有子目录中含有字符串”123″的文本文件,结果: test\1.txt test\2.txt test\3.txt test\4.txt test\5.txt test\6.txt test\7.txt test\8.txt test\9.txt
/c:使用指定字符串作为文字搜索字符串,如要搜索字符串”123 456″,通常我们会想到 findstr “123 456” test.txt
但是这样搜索字符串会被当成两个字符串,只含有”123″或”456″的行也会被打印出来,此时就可以用 findstr /c:”123 456″ test.txt
这是搜索字符串为”123 456″了。 /g:从指定的文件获得搜索字符串,也就是事先把搜索字符串放在一个文本文件中,findstr执行时到这个文件中去找这个搜索字符串,如1.txt中内容为”123“,执行命令 findstr /g:1.txt test.txt
等同于findstr “123” test.txt。1.txt中可以有多行,表示有多个搜索字符串。 /d:查找以分号为分隔符的目录列表,就是到这个开关所指定的目录中去搜索指定文件,如有11和22两个文件夹在当前目录下,执行命令: findstr /d:11;22 “12” *.txt
结果如下: 11: 1.txt:123 2.txt:123456789 3.txt:123456789 4.txt:123456789 5.txt:123456789 22: 6.txt:123456789 7.txt:123456789 8.txt:123456789 9.txt:123456789
findstr /r “” 1.txt 是正则表达式,用法如下
1.findstr . 2.txt 或 Findstr “.” 2.txt 从文件2.txt中查找任意字符,不包括空字符或空行 ====================
2.findstr .* 2.txt 或 findstr “.*” 2.txt 从文件2.txt中查找任意字符包括空行和空字符 ====================
3.findstr “[0-9]” 2.txt 从文件2.txt中查找包括数字0-9的字符串或行 ====================
4.findstr “[a-zA-Z]” 2.txt 从文件2.txt中查找包括任意字符的字符串或行 ====================
5.findstr “[abcezy]” 2.txt 从文件2.txt中查找包括a b c e z y字母的字符串或行 ====================
6.findstr “[a-fl-z]” 2.txt 从文件2.txt中查找小写字符a-f l-z的字符串,但不包含g h I j k这几个字母。 ====================
7.findstr “M[abc][hig]Y” 2.txt 从文件2.txt中可以匹配 MahY , MbiY, MahY等….. ====================
8. ^和符号的应用 ^ 表示行首,”^step”仅匹配 “step hello world”中的第一个单词 表示行尾,”step
9.findstr “[^0-9]” 2.txt 如果是纯数字的字符串或者行便过滤掉,例如2323423423 这样的字符串,如果是345hh888这样的形式就不成了。 ====================
10.findstr “[^a-z]” 2.txt 同上,如果是纯字母的字符串或者行便过滤掉,例如 sdlfjlkjlksjdklfjlskdf这样的字符,如果是sdfksjdkf99999这样的形式,掺杂着数字就不成了 ====================
11.*号的作用 前面已经说过了 “.*”表示搜索的条件是任意字符,*号在正则表达式中的作用不是任何字符,而是表示左侧字符或者表达式的重复次数,*号表示重复的次数为零次或者多次。 ====================
12.findstr “^[0-9]*” 2.txt 这个是匹配找到的纯数字,例如 234234234234,如果是2133234kkjl234就被过滤掉了。 Findstr “^[a-z]*” 2.txt 这个是匹配找到的纯字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被过滤掉了 如果在搜索条件里没有*号,也就是说不重复左侧的搜索条件,也就是[0-9] [a-z]那只能匹配字符串的第一个字符也只有这一个字符,因为有行首和行尾的限制,”^[0-9]
13. “\<…\>”这个表达式的作用 这个表示精确查找一个字符串,\<sss 表示字的开始位置,sss\>表示字的结束位置 echo hello world computer|findstr “\<computer\>”这样的形式 echo hello worldcomputer|findstr “\<computer\>” 这样的形式就不成了,他要找的是 “computer”这个字符串,所以不可以。 echo hello worldcomputer|findstr “.*computer\>”这样就可以匹配了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213944.html原文链接:https://javaforall.cn