网站首页 > 技术文章 正文
提到查找字符串,我们首先想到的肯定是CTRL+F,这是Windows下的操作,批处理下呢?这篇我们来学习批处理如何查找文本中的字符串。批处理中主要有两个命令find和findstr,这篇先学习find这个外部命令(findstr是find的增强命令,参数功能更多,两者也有一些用法上的区别)。
先来看下语法:
Syntax
FIND [/V] [/C] [/N] [/I] "string" [pathname(s)]
在一个或多个文件里搜索一个文本字符串,也就是在文件中搜索文本字符串并显示找到该字符串的所有行。
1.这里指明的是一个具体的文本字符串,因此find搜索字符串不支持通配符和正则表达式,要使用这些功能需要使用findstr。
2.要查找的字符串打上了双引号,划重点,该字符串一定要用双引号""括起来,否则find会报错。
3.要有被查找的文件及路径,默认当前路径,如果没指定可以从另一个命令经管道符|传入,如
C:\> type cc.txt | find "8800"
type显示cc.txt的文本内容,管道符|将显示的内容传给find命令,并在其中查找指定的字符串8800
4.路径名支持通配符(不建议在路径中使用,会很慢,但可以在文件名中使用)。
5.如果搜索包含双引号字符"的文本,则必须将其转义为"",这是除了用引号括起整个字符串之外的,如搜索"tt",则需要键入"""tt"""来搜索。
6.FIND命令将输出一个包含10个破折号----------的字符串,后面跟着要搜索的文件名,然后是文件中任何匹配的文本行。这也是喜欢这个命令的一个特征。但是如果不想显示这一特征(破折号加路径及文件名),可使用type加管道符号|传递给find,或使用findstr 命令。
下面讲参数的用法:
1.忽略大小写/i(ignore,忽略)
find /i "ac" cc.txt
查找带ac或AC或aC或Ac的字符串,并显示出这些行。
2.显示行号/n(number,号码)
find /i /n "ac" cc.txt
加个/n,你发现了什么,上例中显示的行,行前都加上了行号,也就是该行位于文本的第几行。
3.行数,行计数/c(count,计数)
find /i /c "ac" cc.txt
上例/n改为/c,只显示发现了几行这样的数字串。
4.不包括(exclusive,NOT,排外,不)
find /i /v "ac" cc.txt>dd.txt
上例/c改为/v,表示查找不包括ac(不区分大小写)字符串的行并重定向到dd.txt。
C:\> type myfile.txt | find "" /v /c
空字符串""被视为从不匹配。/v标志反转测试,所以现在它匹配所有内容,然后/c返回文本行数。
问题来了:
1./v和/c同用会显示什么,/n和/c同用又会显示什么?
将 /v 或 /n 与 /c 一起使用,如果在相同的命令行中指定 /c 和 /v ,find 将显示不包含指定字符串的行数。如果在相同的命令行中指定 /c 和 /n,find 将忽略 /n。
2.find的多个参数能连写吗,如/iv,参数,字符串,文件的位置能互换吗?
find不能连写参数,可互换位置。
批处理中find的用法:
1.find用于批处理,与type结合使用,使用管道传递,用于查找字符串。
C:\> TYPE myfile.txt | FIND "" /v /c
2.find用于批处理,更多与for,if,else if等结合使用,尤其是for /f用得较多,重定向查找到的关键字行到文本。
FOR /F "eol=; tokens=* delims=, " %%A in (toollist.txt) do (ping %%A |find "mfg">>log.txt)
需要注意的是如果find不是在do后面的括号里,而是在in后的括号里被单引号"括住,管道传送时需要在前面加^来转义,如^|find。
猜你喜欢
- 2024-12-27 史上最全正则详解 正则的用法
- 2024-12-27 慎用正则表达式 使用正则表达式
- 2024-12-27 Java性能调优--代码篇:优化正则表达式的匹配效率
- 2024-12-27 详细介绍一下Python爬虫中的正则表达式匹配规则?
- 2024-12-27 Word中实例演示:高级查找与高级替换等....
- 2024-12-27 再杂也无惧 在Excel高效提取数字 excel如何提取出数字
- 2024-12-27 Linux下find与exec的联手干大事 linux find -newer
- 2024-12-27 Java中如何使用正则技术提取html中的任意内容
- 2024-12-27 一看就懂 | 30分钟入门正则表达式,看这一篇就够了(值得收藏)
- 2024-12-27 VBA如何找出工作表数据中的数字,简单到不用思考
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)