Bat批处理中的 FINDSTR用法

news/2024/11/7 16:51:05/

linux中的grep等同于win中的findstr命令。可以在txt文本中截取到有特定关键字的行,并显示出来。

 grep也可以通过关键字,在一个文件夹下查找多个有这些关键字的文件,并生成结果。

 

一、findstr命令介绍

findstr是Windows系统自带的命令,简单来说,就是根据一定的格式来查找文件中指定的行,并打印相关信息。

findstr 算是find的扩展,功能更强大,关键是还支持正则表达式。

查看下findstr命令的帮助信息

语法格式

简单格式:findstr [可选参数] 要查找的字符串 [路径\文件名]

详细格式:findstr [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file] [/C:string] [/G: file] [/D:dirlist] [/A:colorattributes] [strings] [ [drive:] [path] filename [ ... ] ]

注意点:

1.默认是查找当前目录,至少指定一个文件,当然可以同时指定多个,用空格分隔。

2.文件名可以使用通配符,例如所有文本文件,就可以写成 *.txt 。

3.详细参数列表

参数        参数说明

/B        在一行的开始配对模式。

/E        在一行的结尾配对模式。

/L        按字使用搜索字符串。

/R        将搜索字符串作为一般表达式使用。

/S        在当前目录和所有子目录中搜索匹配文件。递归查找

/I        指定搜索不分大小写。忽略大小写

/X        打印完全匹配的行。输出和搜索文本完全匹配的行

/V        只打印不包含匹配的行。匹配结果反选,只输出不包含搜索文本的行。

/N        在匹配的每行前打印行数。行号从1开始计数,即:第一行的行号是1

/M        如果文件含有匹配项,只打印其文件名。

/O        在每个匹配行前打印字符偏移量。即匹配内容的首字符在filename整个文件中出现的的字符偏移量,字符偏移量从0开始计数。

/P        忽略有不可打印字符的文件。

/OFF[LINE]        不跳过带有脱机属性集的文件。

/A:attr        指定有十六进位数字的颜色属性。请见 “color /?”

/F:file        从指定文件读文件列表 (/ 代表控制台)。

/C:string        使用指定字符串作为文字搜索字符串。查找包含空格的字符串所在行

/G:file        从指定的文件获得搜索字符串。 (/ 代表控制台)。

/D:dir        查找以分号为分隔符的目录列表

strings        要查找的文字。

[drive:][path]filename        指定要查找的文件。

 

二、例子

使用两个测试文件:

Test1.txt:

hello world

hello world boy

hello world girl

the world is over

Test2.txt:

hello world

hello world boy

hello world girl

the world is broken

1. 指定一个字符串和一个文件,打印找到的行(基本使用、单字符串搜索)

findstr "hello" D:\Test1.txt

得到的结果:

hello world

hello world boy

hello world girl

跟find命令差不多。表示在D盘下的test.txt文件中查找含有 hello这一字符串的所有行。

2、指定多个字符串和一个文件,打印找到的行(多字符串搜索)

findstr "hello world" D:\Test1.txt

得到的结果:

hello world

hello world boy

hello world girl

the world is over

表示查找含有字母 hello 或 world 的行。

这里需要注意,多个字符串通过空格区分,且都需要在""之内,如果这里没有"",第二个字符串(就是这里的world)会被当成文件名。

还有一点值得关注,即同一行只会打印一次,即使包含多个字符串。

3、指定多个字符串和多个文件,打印找到的行

findstr "hello world" D:\Test1.txt D:\Test2.txt

得到的结果:

Test1.txt:hello world

Test1.txt:hello world boy

Test1.txt:hello world girl

Test1.txt:the world is overTest2.txt:hello world

Test2.txt:hello world boy

Test2.txt:hello world girl

Test2.txt:the world is broken

所有包含hello和world的语句都被打印出来了,且在每一行的开头打印都会指定对应的文件。

4、将"hello world"作为一个整体来查找(查找带有空格的字符串)

findstr /C:"hello world" D:\Test1.txt

得到的结果:

hello world

hello world boy

hello world girl

与2相比,此处不再打印单独匹配world的行。

/C用于指定某个字符串,空格不再作为字符串的分隔符,而是作为字符串本身的一部分。如果不用参数/c:findstr "hello world" D:\Test1.txt 就会输出含有字母 hello 或 world 的行

5、只打印文件中完全匹配字符串的行

findstr /C:"hello world" /X D:\Test1.txt

得到的结果:

hello world

/X用来指定全字符串匹配的行,所以后面接了boy/girl的行都不算。

6、只打印不匹配的行

findstr /C:"hello world" /X /V D:\Test1.txt

得到的结果:

hello world boy

hello world girl

the world is over

/V之后不再打印匹配的行,而是相反。

7、findstr中的字符串支持正则表达式,可以使用/R来指定,此时字符串编程正则表达式。

findstr /R "world$" D:\Test1.txt

得到的结果:

hello world

这里的/R指定了正则表达式,而该表达式里面的$表示文件结尾,所以之类的意思就是找到文件结尾是world的字符串。

8、在当前目录及所有子目录下的所有文件中查找

findstr /s /i "hello"  *.*

在当前目录及所有子目录下(/s)的所有文件中查找"hello"这个字符串,*.* 表示所有类型的文件,同时不区分字符串的大小写(/i)。

9、正则表达式的使用

匹配纯字母的行,写法如下:

findstr /R "^[a-z]*$" D:\Test1.txt

匹配hello开头的行,写法如下:

findstr /R "^hello" D:\Test1.txt


http://www.ppmy.cn/news/74430.html

相关文章

加密解密软件VMProtect教程(八)许可制度之管理许可证

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…

pyqt5:py处理C语言格式数组和有符号数的转换(备忘录)

文章目录 1.问题:把下面的数组所表示的正弦波用曲线描绘出来。1.1 将C语言数组直接替换为py数组1.2 使用numpy读入数组1.3完整代码 2.从正弦波数据生成C数组2.1 正弦波数据2.2 负数转成16位带符号整型公式2.3 负数转成16位带符号整型 完整代码 3. 生成正弦波数据的代…

LeetCode-0523

1047. 删除字符串中的所有相邻重复项(简单) class Solution {public String removeDuplicates(String s) {Stack<Character> sta new Stack<>();for(int i0;i<s.length();i){char tp s.charAt(i);if(!sta.isEmpty()&&tpsta.peek()){sta.pop();contin…

从裸机启动开始运行一个C++程序(三)

先序文章请看 从裸机启动开始运行一个C程序&#xff08;二&#xff09; 从裸机启动开始运行一个C程序&#xff08;一&#xff09; 编写MBR 上一章我们已经成功地在8086上运行了指令&#xff0c;同时也介绍了nasm汇编语言。那么接下来这一章&#xff0c;我们就来看看如何写BIO…

宜搭低代码开发师(高级)「FaaS连接器加解密系统」操作步骤(亲测OK)

目录 目标: 步骤: 一、FaaS连接器 二、页面步骤介绍 目标: 轻松搞定高级认证!!! 步骤: 提示&#

单循环比赛

固定轮转编排法 固定轮转法也叫常规轮转法&#xff0c;是我国传统的编排方法。它以左边第一号固定不动&#xff0c;逆时针转动&#xff0c;逐一排出。 public function fixedRotation(){$teamlist [1, 2, 3, 4, 5,6, 0];//参赛的各队$len count($teamlist);for ($i 1; $i &l…

weblogic CVE-2014-4210 SSRF漏洞

CVE-2014-4210 SSRF漏洞 Weblogic 中存在一个SSRF漏洞&#xff0c;利用该漏洞可以发送任意HTTP请求&#xff0c;进而可以攻击内网中Redis、Fastcgi等脆弱组件 该漏洞存在于/uddiexplorer/SearchPublicRegistries.jsp SSRF&#xff1a;服务端请求伪造&#xff0c;伪造存在该漏洞…

SpringBoot开发实用篇1

一、热部署 1.手工启动热部署 经过测试当前是没有启动热部署的&#xff1a; 再将sout的信息多复制几份&#xff0c;刷新功能&#xff0c;发现控制台还是只打印一行信息。说明当前热部署是没有生效的。 手动开启热部署&#xff1a; 在pom.xml文件中加入开发者工具配置热部署…