Windows cmd中使用管道过滤命令findstr(类似linux的grep)

平时使用linux习惯了,管道命令是使用非常高频的,使用cmd也是想要,但是平时使用很少所以就忘记了,这里做个笔记。

cmd中使用管道命令使用FINDSTR

findstr是Window系统自带的命令,用途是查找指定的一个或多个文件文件中包含(或通过参数 /V来控制不包含)某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。

搜索文件中的文本模式。

语法

findstr [/b] [/e] [/l | /r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/f:<file>] [/c:<string>] [/g:<file>] [/d:<dirlist>] [/a:<colorattribute>] [/off[line]] <strings> [<drive>:][<path>]<filename>[ ...]

参数

参数说明
/b如果文本模式位于行的开头,则匹配它。
/e如果文本模式位于行尾,则匹配它。
/l按字面处理搜索字符串。
/r将搜索字符串处理为正则表达式。 这是默认设置。
/s搜索当前目录和所有子目录。
/i搜索字符串时忽略字符的大小写。
/x打印完全匹配的行。
/v仅打印不包含匹配项的行。
/n打印每个匹配行的行号。
/m如果文件包含匹配项,则仅打印文件名。
/o打印每个匹配行前的字符偏移量。
/p跳过包含不可打印字符的文件。
/off [line]不会跳过设置了脱机属性的文件。
/f:<file>从指定的文件中获取文件列表。
/c:<string>使用指定的文本作为文本搜索字符串。
/g:<file>从指定的文件中获取搜索字符串。
/d:<dirlist>搜索指定的目录列表。 每个目录必须用分号分隔 (; 例如 dir1;dir2;dir3 ) 。
/a:<colorattribute>指定带有两个十六进制数字的颜色属性。 有关其他信息,请键入 color /?
<strings>指定要在 filename中搜索的文本。 必需。
[\<drive>:][<path>]<filename>[...]指定要搜索的位置和文件。 至少需要一个文件名。
/?在命令提示符下显示帮助。

注解

所有 findstr 命令行选项都必须在命令字符串中的 字符串文件名 之前。

正则表达式使用文本字符和元字符来查找文本模式,而不是精确字符串。

文本字符是在正则表达式语法中没有特殊含义的字符;而是匹配该字符的匹配项。 例如,字母和数字是原义字符。

元字符是在正则表达式语法中具有特殊含义 (运算符或分隔符) 的符号。

接受的元字符包括:

元字符
.通配符 -任意字符
*重复执行 零次或多次出现的上一个字符或类。
^起始行位置 -行的开头。
$结束行位置 -行的末尾。
[class]字符类 -集合中的任何一个字符。
[^class]反向类 -任何一个不在集内的字符。
[x-y]范围 -指定范围内的任何字符。
\x元字符的转义文本使用。
\<string开始单词位置 -单词的开头。
string\>结束单词位置 -单词的结尾。

正则表达式语法中的特殊字符在一起使用时,其功能最高。 例如,使用通配符 (.) 的组合,并重复 (*) 字符以匹配任意字符串: .*

使用以下表达式作为更大的表达式的一部分,以匹配以 b 开头并以 ing结尾的任何字符串: b.*ing

若要在一组文件中搜索多个字符串,必须在单独的行上创建一个包含每个搜索条件的文本文件。

使用空格分隔多个搜索字符串,除非参数使用 /c作为前缀。

示例

若要在文件x.y中搜索 “hello” 或 “there“,请键入:

findstr hello there x.y

若要在文件 x.y 中搜索 hello there ,请键入:

findstr /c:"hello there" x.y

若要查找文件 proposal.txt 中所有出现的单词 Windows(首字母大写字母 W),请键入:

findstr Windows proposal.txt

要搜索当前目录和所有包含单词 Windows 的子目录中的每个文件,无论字母大小写如何,请键入:

findstr /s /i Windows *.*

要查找所有以 FOR 开头且前面有零个或多个空格的行(如在计算机程序循环中),并显示找到每个出现的行号,请键入:

findstr /b /n /r /c:^ *FOR *.bas

若要在文本文件中列出要搜索的确切文件,请使用文件 stringlist.txt 中的搜索条件,搜索 filelist.txt 中列出的文件,然后将结果存储在文件 results.out 中,键入:

findstr /g:stringlist.txt /f:filelist.txt > results.out

若要列出当前目录和所有子目录中包含单词 computer 的每个文件,无论大小写,请键入:

findstr /s /i /m \<computer\> *.*

若要列出包含单词 computer 和任何其他以 comp 开头的单词的每个文件(例如 compliment 和 compete),请键入:

findstr /s /i /m \<comp.* *.*

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注