findstr 用法

findstr 用法http://bathome.l3.wuyou.com/thread-11159-1-6.html/B在一行的开始配对模式。——只在行开头搜索。/E在一行的结尾配对模式。——只在行结尾搜索。/L按字使用搜索字符串。——具体不详,可以与/r参数替换测试。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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$”仅匹配 “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]$”第一个字符如果是数字就匹配,如果不是就过滤掉,如果字符串是 9 就匹配,如果是98或者9j之类的就不可以了。
=====================

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号