【WINDOWS / DOS 批处理】findstr命令之参数详解(一)

目录

命令格式

命令功能

【filename参数】 

【/I参数】 

【/N参数】

【/X参数】

【/F:file参数】 

【/G:file参数】 

【strings和/C:string参数】

 【/R参数和/L参数】


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 [ ... ] ]

命令功能

  使用findstr命令,可以在文件中搜索字符串,并把包含该字符串的所有行的整行内容输出。

filename参数】 

  • filename可以是隐藏文件
  • filename支持通配符
  • filename可以包含相对路径,也可以包含绝对路径
  • 如果filename不包括空白,则其两边的双引号可有可无,如果filename中包含空白,则必须使用双引号引起来
  • 同一条findstr命令中,可以有多个filename

/I参数】 

 指定strings(或/c指定的字符串)不区分字母大小写。默认情况下,strings(或/c指定的字符串)是区分大小写的。

/N参数

  在匹配的每行前显示行号。行号从1开始计数,即:第一行的行号是1 

/X参数

 输出和搜索文本完全匹配的行。

        示例

  a.txt的内容如下:

a b c
x y z
a

         运行

C:\>findstr /n /x a a.txt
3:a

        解析 

  • 找出整行内容是“a”的行,在a.txt中,只有第3行满足。

 【/V参数

 只输出不包含搜索文本的行。

        示例

  a.txt的内容如下:

a b c
x y z
a

        运行

C:\>findstr /v a a.txt
x y z

        解析

  •  在a.txt中,只有“x y z”这行不包括“a”

/M参数】 

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

        示例

   a.txt的内容如下:

a b c
x y z
a

        运行 

C:\>findstr /m a a.txt
a.txt

        解析 

  • 虽然同一文件有多行匹配,但只显示一次该文件名。在a.txt中,第1行和第3行都包含“a”,只输出一次a.txt

/O参数】 

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

【注意】行号从1开始计数,即:第一行的行号是1位置。

        示例

   a.txt的内容如下:

a b c   // 末行的回车符算作一个字符   这行共4个字符
x y z   // 末行的回车符算作一个字符   这行共4个字符
a

         运行

C:\>findstr /o a a.txt
0:a b c
14:a

         解析

上述命令匹配了a.txt文件中的两行:

  • “a b c”这行:“a”在a.txt文件中的偏移是0
  • “a”这行:“a”在a.txt文件中的偏移是14

/F:file参数】 

 从file指定的文件读取被搜索的文件列表。 如果从控制台输入, 需使用"/"替换 file。

        示例

 a.txt的内容如下:

123
456
789

 b.txt的内容如下: 

123,456,789
one two three
a,b,c
a b c

 c.txt的内容如下: 

this is a book.

 fileList.txt的内容如下:

a.txt
b.txt
c.txt

         运行

C:\>findstr   /f:fileList.txt   123             // 命令一
a.txt:123
b.txt:123,456,789

C:\>findstr   /F:/   123                        // 命令二
a.txt      //行末输入回车
a.txt:123
b.txt      //行末输入回车
b.txt:123,456,789
c.txt      //行末输入回车
^Z         //结束输入:ctrl+z,再输入回车

        解析 

  • 命令一:fileList.txt中指定了a.txt、b.txt和c.txt三个文件,在这三个文件中,只有a.txt和b.txt存在包含“123”的行
  • 命令二:在控制台输入被搜索的文件列表,操作注意点:
  1. 输入每个被搜索的文件名后,要输入回车符
  2. 结束输入:先组合键ctrl+z,再输入回车

/G:file参数】 

 从file指定的文件读取搜索文本。如果从控制台读取,需使用 "/" 替换 fife。

        示例

a.txt的内容如下:

one two three
11 22 33
a b c

 text.txt内容如下: 

one
a

         运行

C:\>findstr /n /g:/ a.txt              // 命令一
one    //行末输入回车
a      //行末输入回车
^Z     //结束输入:ctrl+z,再输入回车
1:one two three     
3:a b c
C:\>findstr /n /g:text.txt a.txt       // 命令二
1:one two three
3:a b c

        解析 

  • 命令一:在控制台中输入搜索文本(“one”“a”),然后找出a.txt文件中包含“one”或者“a”的行
  • 命令二:从text.txt文件读取搜索文本(“one”“a”),然后找出a.txt文件中包含“one”或者“a”的行

strings和/C:string参数

  • /C:string参数在同一条findstr命令中可以多次出现,即:在一条findstr命令中可以存在多个/C:string参数
  • strings在同一条findstr命令中不能出现多次,即:在一条findstr命令中最多只能存在一个strings
  • strings或/C:string参数都可用于指定搜索文本,默认情况下,搜索文本区分大小写
  • strings或/C:string参数都不支持DOS通配符
  • strings或/C:string参数不能同时出现在一条findstr命令中,所以, findstr命令有两种使用格式,如下:
  1. findstr  [option ...]  /C:string  [/C:string ...]   filename [ ... ]]     /L是缺省值
  2. findstr  [option ...]  strings   filename [ ... ]]     /R是缺省值
  •  strings或/C:string参数指定的字符串如果包含空格,则空格的含义是不同的。
  1. strings指定的字符串如果包含空格(多个连续的空格被看作一个空格),则该空格会被当作多个搜索文本的分隔符,而不是空格字符本身。【注意】被空格分隔的每段搜索文本都会单独在文件中进行匹配,并且把各自的匹配结果输出。
  2. /C:string参数指定的字符串如果包含空格(多个连续的空格不能看作一个空格),则该(些)空格不会被当作多个搜索文本的分隔符,而是空格字符本身。由于findstr支持的正则表达式元字符中没有表示空格的元字符,所以,要使用/R指定搜索文本,且想匹配搜索文本中的空格(如果存在),那么使用“findstr  /R  /C   filename”是个不错的主意。

        示例

  a.txt的内容如下:

a b c
x y z
abc
zyz

        运行

C:\>findstr    /r   /c:"^a b"   a.txt      //命令一
a b c
C:\>findstr    /c:"a b"   a.txt            //命令二
a b c
C:\>findstr    "a b"   a.txt               //命令三
a b c
abc

        解析

  • 命令一/C:string参数指定的字符串包含空格(空格表示自身字符),/c:"^a b"表示查找以“a b”开头的行
  • 命令二/C:string参数指定的字符串包含空格(空格表示自身字符),/c:"a b"表示查找包含“a b”的行
  • 命令三:strings指定的字符串包含空格(空格会被当作多个搜索文本的分隔符),  "a b"被空格分为“a”“b”两段搜索文本,“a”的匹配结果和“b”的匹配结果“除重”后被输出  

 【/R参数和/L参数

  • /R参数和/L参数用于指定搜索文本的字符串形式,但它们不能同时出现在同一条findstr命令中
  • /R参数:把strings(或/C:string指定的字符串)看作正则表达式进行搜索。R是regular(正则表达式)的首字母。

  •   /L参数:把strings(或/C:string指定的字符串)看作文字(字符串)进行搜索。L是language的首字母。

        示例

  a.txt的内容如下:

one two three
^one two three four
first second third
^first second third

        运行

C:\>findstr   /n   -r    /c:third$   a.txt                   // 命令一      
3:first second third
4:^first second third

C:\>findstr    /n   /c:third$   a.txt                        // 命令二

C:\>findstr   /n    -r    /c:third$    /c:fo.r a.txt         // 命令三
2:^one two three four
3:first second third
4:^first second third

        解析

  • 命令一:显式指定-r参数指定搜索文本是正则表达式),third$被看作正则表达式。
  • 命令二:使用“/c:third$”指定搜索文本,缺省值是/L(指定搜索文本是文字字符串,不是正则表达式), “third$”会被当作文字字符串,在a.txt中找不到。
  • 命令三:显式指定-r参数指定搜索文本是正则表达式),third$”和“fo.r ”都被看作正则表达式,所以,匹配“third$”的结果和匹配“fo.r ”的结果都会被输出。【注意】在同一条findstr命令中,如果存在多个/C:string参数,则每个/C:string参数指定的搜索文本都会单独在文件中进行匹配,并且把各自的匹配结果输出。

写作不易,如果您觉得对您有用,请 “在下面一圈三连”

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值