c语言findstr用法,常用批处理命令总结之Find和FindStr

c语言findstr用法,常用批处理命令总结之Find和FindStr

2023年7月26日发(作者:)

c语⾔findstr⽤法,常⽤批处理命令总结之Find和FindStrfind 作⽤:从⽂件中收索字符串格式:find 参数 "字符串" 路径⽂件名参数: /V 显⽰所有未包含指定字符串的⾏。/C 仅显⽰包含字符串的⾏数。/N 显⽰⾏号。/I 搜索字符串时忽略⼤⼩写。/OFF[LINE] 不要跳过具有脱机属性集的⽂件。当⽂件中包含要查找的字符串时,将返回这个字符串所在位置的整⾏内容。默认情况下是区分⼤⼩写的,若想要不区分⼤⼩写就是⽤参数 /i 有时候,我们的需求并不是为了查找到某个字符串,⽽是要检测哪些⾏不含有特定的字符串,这个时候,可以使⽤开关/v,⽤法为:find /v "Abc" ,它表⽰查找那些不含字符串Abc的⾏(Abc要区分⼤⼩写),如果不区分abc的⼤⼩写,那么,应该写成 find /i /v "Abc" 。还有⼀点是find ⽀持查找通配符⽂件。如 find "1" *.txt。findstr 是find的扩展,功能更强⼤格式:findstr 参数 字符串 路径⽂件名参数: /B 在⼀⾏的开始配对模式。 (就是指以字符串开头,begin 这样就⽅便了记忆)/E 在⼀⾏的结尾配对模式。(就是指以字符串结尾,end 这样就⽅便记忆)/L 按字使⽤搜索字符串。就是将后⾯的""⾥的当成⼀个字符/R 将搜索字符串作为⼀般表达式使⽤。/S 在当前⽬录和所有⼦⽬录中搜索匹配⽂件。/I 指定搜索不分⼤⼩写。(英⽂:ignore 忽略)/X 打印完全匹配的⾏。/x 是指完全匹配,就是说整⾏匹配,⽽不是含有关键字./V 只打印不包含匹配的⾏。(就是找出不包含字符串的)/N 在匹配的每⾏前打印⾏数。(就是在输出⾏的前⾯加上原⽂件中的⾏数,英⽂:number)显⽰的结果中冒号(:)是英⽂格式下的,在⽤for提取的时候需要注意!/M 如果⽂件含有匹配项,只打印其⽂件名。(指定⽂件中输出含有字符串的⽂件名)/O 在每个匹配⾏前打印字符偏移量。o开关的作⽤是告诉你每⾏第⼀个字符前的位置是该⽂件中的第⼏个字节计算时别忘了⽂本中不可见的回车符合换⾏符将占两字节(某些⽂本中只占⼀字节)。还有空格键⼀个字符。肯定听不懂。看例⼦:⽂件内容: 就三⾏三个c没有空格。输⼊:findstr /o c 结果是:c 0:cc 3:cc 6:c怎么计算:第⼀⾏的c前没有字符所以是0.第⼆⾏的c前⼀⾏只有⼀个c算⼀个字符由于是第⼆⾏所以算⼀个回车2个字符就是:1+2=3同理第三个c前有2个字符和2个回车:1*2+2*2=6.。/P 忽略有不可打印字符的⽂件。(我不清楚,个⼈⽆法解释)/C:string 使⽤指定字符串作为⽂字搜索字符串。如:findstr /c:"a b" 就会找出含"a b"的⾏并输出来(注意a和b中间有空格)如果不⽤参数/c:findstr "a b" 就会输出含有字母 a 或 b 的⾏。/G:file 从指定的⽂件获得搜索字符串。 (/ 代表控制台)。如:findstr /g: 就是把中含有中任⼀⾏内容的⾏输出来。上⾯的有点像:@echo offfor /f "delims=" %%a in ('type ') do (findstr "%%a" o.)pause(以上是⾃⼰试出来的,不保证正确)/A:attr 指定有⼗六进位数字的颜⾊属性。请见 "color /?"(使⽤这个可以在dos上⾯搞出不同颜⾊的字,⾃⼰想想)/F:file 从指定⽂件读⽂件列表 (/ 代表控制台)。/D:dir 查找以分号为分隔符的⽬录列表/OFF[LINE] 不跳过带有脱机属性集的⽂件。除⾮参数有 /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> 字位置: 字的结束是单词锚定 ^是⾏⾸ $是⾏尾注意的是:别把^,$和弄混了⼀个是⾏⼀个是字。⾏开始与结束没什么好说的。⽽字的开始和结束就不⼀样了,例如:⾥两⾏为"abcd" 和 "abcd e"⽤命令findstr "cd>" 两⾏都会出现,只要是连在⼀起(没被空格开)的并以cd结尾的(不 要求是⾏尾)都满⾜。相当于⽂本中出现英语中以cd结尾的的单词了的⾏都会输出来。举⼀些例⼦(来⾃⽹络):r . 或 findstr "." r .* 或 findstr ".*" 从⽂件中查找任意字符,不包括空字符或空⾏ 从⽂件中查找任意字符包括空⾏和空字符==================== ====================r "[0-9]" r "[a-zA-Z]" 从⽂件中查找包括数字0-9的字符串或⾏ 从⽂件中查找包括任意字符的字符串或⾏==================== ====================r "[abcezy]" r "[a-fl-z]" 从⽂件中查找包括a b c e z y字母的字符串或⾏ 从⽂件中查找⼩写字符a-f l-z的字符串,但不包含g h I j k这⼏个字母。==================== ====================r "M[abc][hig]Y" 8. ^和$符号的应⽤从⽂件中可以匹配 MahY , MbiY, MahY等….. ^ 表⽰⾏⾸,"^step"仅匹配 "step hello world"中的第⼀个单词$ 表⽰⾏尾,"step$"仅匹配 "hello world step"中最后⼀个单词==================== ==================== "[^0-9]" 如果是纯数字的字符串或者⾏便过滤掉,例如2323423423 这样的字符串,如果是345hh888这样的形式就不成了。====================r "[^a-z]" 同上,如果是纯字母的字符串或者⾏便过滤掉,例如 sdlfjlkjlksjdklfjlskdf这样的字符,如果是sdfksjdkf99999这样的形式,掺杂着数字就不成了====================11.*号的作⽤前⾯已经说过了 ".*"表⽰搜索的条件是任意字符,*号在正则表达式中的作⽤不是任何字符,⽽是表⽰左侧字符或者表达式的重复次数,*号表⽰重复的次数为零次或者多次。====================r "^[0-9]*$" 这个是匹配找到的纯数字,例如 234234234234,如果是2133234kkjl234就被过滤掉了。Findstr "^[a-z]*$" 这个是匹配找到的纯字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被过滤掉了如 果在搜索条件⾥没有*号,也就是说不重复左侧的搜索条件,也就是[0-9] [a-z]那只能匹配字符串的第⼀个字符也只有这⼀个字符,因为有⾏⾸和⾏尾的限制,"^[0-9]$"第⼀个字符如果是数字就匹配,如果不是就过滤掉, 如果字符串是 9 就匹配,如果是98或者9j之类的就不可以了。=====================13. ""这个表达式的作⽤这个表⽰精确查找⼀个字符串,表⽰字的结束位置echo hello world computer|findstr ""这样的形式echo hello worldcomputer|findstr "" 这样的形式就不成了,他要找的是 "computer"这个字符串,所以不可以。echo hello worldcomputer|findstr ".*computer>"这样就可以匹配了14.吧⽂档中超过10个字符的⾏输出到@findstr .......... >感觉好像⾥是少于10个字符的⾏,可是实际却是超过10个字符的⾏,包括10个字符。find⽐findstr更强的地⽅:1、统计含指定字符串的总⾏数。find /c "abc" 可以统计中含有字符串abc的总⾏数,⽽findstr则没有直接提供该功能,需要配合for语句才能实现;2、find可以读取Unicode格式的⽂本,⽽findstr则不⾏;3、find可以过滤某些特殊字符,⽽findstr则不⾏,⽐如,我们在使⽤fsutil fsinfo drives语句查询磁盘分区的时候,如果想让盘符分⾏显⽰⽽不是显⽰在同⼀⾏上的时候(这在⽤for语句提取盘符的时候很有⽤),find可以⼤显⾝⼿,⽽findstr只能⼲瞪眼了,具体语句为: 代码:fsutil fsinfo drives|find /v ""

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690360627a337723.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信