1.字符串查找:find
2.字符串查找增强:findstr

一.字符串查找:find

在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文字串,
[drive:][path]filename 指定要搜索的文件。

基本格式:find "要查找的字符串" 要查找的文件(不在当前目录则需要给出完整路径)

例1
find "abc" d:\abc.txt
在abc.txt中查找字符串abc的行。

/I 搜索字符串时忽略大小写。

例2
find /i "abc" d:\abc.txt
参数/i代表的是“Ignore”(忽略),也就是忽略大小写。通过/I 参数可以不区分要查找的字符串“abc”的大小写。

/N 显示行号。

例3
find /n "abc" d:\abc.txt
参数/n代表英语单词“Number”(号码).。通过/n参数我们可以查找到字符串"abc"所在的行号。

/C 仅显示包含字符串的行数。

例4
find /c "abc" d:\abc.txt
参数/c是英语单词“Count”(计数)的缩写。通过/c参数我们可以统计包含"abc"字符串的行数。

/V 显示所有未包含指定字符串的行。

例5
find /v "abc" d:\abc.txt
这个参数用于找出文件中不包含指定字符串的行。在这里表示查找不包含"abc"字符串的行。

注意:find命令中要查找的字符串一字要用双引号" "括起来。

二.字符串查找增强:findstr

在文件中寻找字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]

/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索
匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表
strings 要查找的文字。
[drive:][path]filename 指定要查找的文件。

除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there" 。 'FINDSTR /C:"hello there" x.y' 在文件 x.y 寻找 "hello there"。

1.基本格式:findstr " strings " [drive:][path]filename

Strings 是要查找的内容。
[rive:][path]filename 指定要查找的文件,路径可缺省,缺省情况下为当前目录。

例1
findstr "icq" 123.txt
在123.txt中查找包含有“icq”这三个字符串的行。

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

例2
findstr /i "MSN" 123.txt
在123.txt中查找包含有“MSN”这三个字符的行,且不区分大小写。

★/R 将搜索字符串作为正则表达式使用。参数/R 强调以正则表达式规则来解读字符串。R - Right 右即为正。我们
都说右手是正手,因此引申为右为正,左为反。

例3
findstr /r "icq msn" 123.txt
在123.txt中查找包含有 “icq”或“msn”的行,查找的多个字符串间用空格隔格开。

/S 在当前目录和所有子目录中搜索。

例4
findstr /s /i "MSN" *.txt
在当前目录和所有子目录中的txt文件中搜索字符串"MSN"(不区分字母大小写)。

/C:string 使用指定字符串作为文字搜索字符串。

例5
findstr /c:"icq msn" 123.txt
在123.txt中查找包含有 “icq msn”这几个字符的行。注意,这里“icq msn”是一整体的。
此参数多用于查找含有空格的字符串。

★在使用 findstr "我 你 他" test.txt 的时候,并不能查找到内容,但是,加上开关 /i 或者 /r 之后就正确无误
了,可能是在查找多个纯中文字符串的时候的一个bug吧;单个的纯中文字符串没有任何问题。

2.findstr 命令中正则表达式的用法规则

一般表达式的快速参考:
. 通配符: 任何字符

  • 重复: 以前字符或类别出现零或零以上次数
    ^ 行位置: 行的开始
    $ 行位置: 行的终点
    [class] 字符类别: 任何在字符集中的字符
    [^class] 补字符类别: 任何不在字符集中的字符
    [x-y] 范围: 在指定范围内的任何字符
    \x Escape: 元字符 x 的文字用法
    \<xyz 字位置: 字的开始
    xyz\> 字位置: 字的结束

● 通配符和重复符规则,即 . 和
通配符,即一个句点,代表任何一个字符,而且只能是一个,包括字母、数字、半角符号还有空格。
重复符,即型号
 代表前面字母的出现次数(出现次数从0到多次,0表示没有)。

findstr . 123.txt 或 findstr "." 123.txt
在文件123.txt中查找任意字符,不包括空行。

例6
findstr . 2.txt 或 findstr "." 2.txt
在文件123.txt中查找任意字符,包括空行。

例7
findstr ac* 123.txt
在文件123.txt中查找出现一个“a”字符串,以及a后面出现过0次或者任意次c的字符行。
如:
a
ac
acc
addc
等都匹配。

例8
findstr ak5* 123.txt
在文件123.txt中查找出现一个“ak”字符串,以及ak后面出现过0次或者任意次5的字符行。如:
ak
ak5
akbbb
ak125
ak555
等都匹配。

●行首、行尾符规则,即 ^ 和 $

例9
findstr "^step" 123.txt
在文件123.txt中查找行首为step字符串的行。
如:
stepkdka
step 456
这两行都匹配的。

例10
findstr "step$" 123.txt
在文件123.txt中查找行尾为step字符串的行。
如:
123 dstep
123step
这两行也匹配的。

例11
findstr "^step$" 123.txt
在文件123.txt中查找行首为step,且行尾也为step的行,即step独自一行。

● 字符集规则,即[class]
①表示含有集里的任意一个字符的即匹配。
②该字符集里的元素可以是字母和数字和一般的半角字符,如:}{ ,.][等,但双引号"不被识别。不能是汉字, 汉字
不被正确解释(汉字不是ASCII码)。
如果在字符集内插入通配符和重复符号,即"[.]"将会把. 和 视为普通字符,没有通配和重复的含义。

例12
findstr "[0-9]" 123.txt
在文件123.txt中查找数字0-9的任意之一的行。
如:
4kkb
1 lkka cc
这两行都匹配。

例13
findstr "[a-zA-Z]" 123.txt
在文件123.txt中查找包括任意字母行。

例14
findstr "[abcezy]" 2.txt
在文件123.txt中查找包括a b c e z y其中任意一字母的行。

例15
findstr "[a-fl-z]" 2.txt
在文件123.txt中查找小写字符a到f 或l到z的任意一字母的行,但不包含g h I j k这几个字母。

例16
findstr "M[abc][123]Y" 2.txt
在文件123.txt中查找可以匹配 Ma1Y , Mb1Y, Mc1Y; Ma2Y , Mb2Y, Mc2Y; Ma3Y , Mb3Y, Mc3Y的行。

● 减法规则,即[^class]

例17
findstr "[^0-9]" 123.txt
如果是纯数字的行便过滤掉,例如2323423423 这样的字符串被过滤,345hh888这样的形式则过滤不了。
注意,纯数字的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!

例18
findstr "[^a-z]" 123.txt
如果是纯字母的行便过滤掉,例如 sdlfjlkjlksjdklfjlskdf 这样的字符将被过滤,如果是sdfksjdkf99999这样的形
式则过滤不了。
注意,纯字母的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!

例19
findstr "[^add]" 123.txt
过滤仅含有由a d d三个字母组成的纯字母字符串的行。
如:
a
ad
ddaadd
dd
这些行都会被过滤。
注意,仅含有由a d d三个字母组成的纯字母字符串的行不能有空格,不论行首行尾或者是行中都不能有空格,否则
过滤失败!

例20
findstr "[^echo]" 123.txt
过滤仅含有由e c h o 四个字母组成的纯字母字符串的行。
如:
e
c
ec
cho
chooo
这些行都会被过滤。

●单词前缀后缀定位规则,即\<xyz和xyz\>

该xyz可以是英文单词或数字,但不适用于汉字。符号 \ 理解为转义符,化解小于号和大于号的重定向命令含义。
该规则是匹配类似单个英文单词的。

例21
findstr "\<echo" 123.txt
所有含有以echo为前缀的字符串的行,都匹配。
如:
echo:kkk a add
jjkk echo
这两行都匹配。
(思考:为什么:echo也匹配?)

例22
findstr "echo\>" 123.txt
所有含有以echo为后缀的字符串的行,都匹配。
如:
qq bbecho 这一行也匹配。
(思考:为什么kkkk echo:也匹配?)

例23
findstr "\<end\>123.txt
这里是用来精确查找单词。查找单词end的行,
注意:
ended
cdkend
bcd-end-jjkk
这类词都不匹配。
(思考:为什么end echo和end也匹配?因为\<xyz\>格式要查找的是单个英文单词。)

● 转义符 \
把表达式中的特殊字符(元字符)转化为普通字符。常见写法:
.
*
\
??
-

例24
findstr ".abc" 123.txt
在文件123.txt中查找可以匹配“.abc”字符串的行,这里\。是把。给转义了。

例25
findstr "1\" 123.txt 或findstr "1\\" 123.txt
在文件123.txt中查找可以匹配“1\”字符串的行,这里\是把\给转义了。

★要查找的字符串含有\时,可以用\把\给转义;或者把\变成\\。如果目标字符串的\后面还有内容,则搜索字符
串\除了要变成\(本身的转义要求),还可以在它后面再加一个字符,如\.

>find /?
在文件中搜索字符串。FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]/V         显示所有未包含指定字符串的行。/C         仅显示包含字符串的行数。/N         显示行号。/I         搜索字符串时忽略大小写。/OFF[LINE] 不要跳过具有脱机属性集的文件。"string" 指定要搜索的文本字符串。[drive:][path]filename指定要搜索的文件。如果没有指定路径,FIND 将搜索在提示符处键入
的文本或者由另一命令产生的文本。
findstr /?
在文件中寻找字符串。FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file][/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]strings [[drive:][path]filename[ ...]]/B         在一行的开始配对模式。/E         在一行的结尾配对模式。/L         按字使用搜索字符串。/R         将搜索字符串作为一般表达式使用。/S         在当前目录和所有子目录中搜索匹配文件。/I         指定搜索不分大小写。/X         打印完全匹配的行。/V         只打印不包含匹配的行。/N         在匹配的每行前打印行数。/M         如果文件含有匹配项,只打印其文件名。/O         在每个匹配行前打印字符偏移量。/P         忽略有不可打印字符的文件。  /OFF[LINE] 不跳过带有脱机属性集的文件。/A:attr    指定有十六进位数字的颜色属性。请见 "color /?"/F:file    从指定文件读文件列表 (/ 代表控制台)。/C:string  使用指定字符串作为文字搜索字符串。/G:file    从指定的文件获得搜索字符串。 (/ 代表控制台)。/D:dir     查找以分号为分隔符的目录列表strings    要查找的文字。[drive:][path]filename指定要查找的文件。除非参数有 /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    字位置: 字的开始xyz\>    字位置: 字的结束有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。

参考:https://blog.51cto.com/u_13718210/2359945

windows 命令行下的find和findstr命令相关推荐

  1. ubuntu命令行启动浏览器_linux命令行下使用linux打开浏览器命令

    linux命令行下使用linux打开浏览器命令: linux命令行:Lynx浏览中文网页的方法(1): 首先:按o键盘进入设定画面 Display character set : [chinese] ...

  2. DOS或命令行下查看进程,结束进程命令

    DOS或命令行下查看进程,结束进程命令  XP中和进程有关的命令: 在system32目录中,dir task* 会看到如下几个文件: +------------------------------+ ...

  3. linux 网络冲浪,命令行下的网络冲浪工具命令行浏览器介绍

    Linux命令行是强大的工具,命令行是我们的日常工作,命令行更是我们日常生活.之前虫虫给大家写过一些命令的的介绍,命令行的工具,命令行下的开发.实际上命令行也是我们不可或缺的生活.本文我们来介绍一下命 ...

  4. php基础命令,PHP命令行下的11个常用命令介绍

    本文整理了PHP命令行下的11个常用命令,下面介绍给大家,它们分别是php -m.php -v.php --ini.php -h.php --info.php --rf .php --rc .php ...

  5. 如何在命令行下查看图片,《命令行图片查看器》

    在对各种命令属性的情况下,在命令行工作十分方便的.但是如果遇到图片,如果图片命名十分混乱的情况下,要确定是什么图片就十分麻烦了.不知各位如果解决. 在此我推荐一个有趣库,可以在命令行下查看图片(不过不 ...

  6. Delphi应用程序在命令行下带参数执行返回命令行提示的问题

    在命令行模式(CMD)下执行时,想获得执行参数,用以下变量:     ParamCount:参数个数     ParamStr:为参数数组 如果想在执行完一个操作后在命令行作出相应提示,就应该在相应位 ...

  7. php在命令行下显示进度条,PHP命令行进度条

    方法:/** * PHP命令行执行php文件的时候显示执行进度条 * 调用方法:cmd_progress_bar(100,2);表示进度为2%; * @param $total 总进度数量 * @pa ...

  8. linux命令行下全路径显示,显示命令及文件路径用什么命令?Linux命令知识有什么...

    查看Linux系统路径用什么命令?显示命令及其相关文件全路径的命令有哪些?快速定位文件路径用什么命令?Linux运维学习中,命令是非常重要的.每年学习Linux运维技术的人们越来越多,对于初学者来说, ...

  9. linux命令行下写for语句,Linux命令行 – 流程控制:for 循环

    在这关于流程控制的最后一章中,我们将看看另一种 shell 循环构造.for 循环不同于 while 和 until 循环,因为 在循环中,它提供了一种处理序列的方式.这在编程时非常有用.因此在 ba ...

最新文章

  1. Codeforces Round #501 (Div. 3)【未完结】
  2. button-xml 中android:clickable=false 属性
  3. 关于异地高考引发的又一次舆论攻势
  4. android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1
  5. JS对以对象组成的数组去重
  6. eigen库学习笔记(2)
  7. 随想录(移动app下的生活)
  8. POJ 1753 位运算+枚举
  9. iOS - UIActivityIndicatorView
  10. [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  11. python 使用函数参数注解
  12. c++数据结构中 顺序队列的队首队尾_数据结构与算法(三)栈和队列
  13. VC++调试错误的解决方案
  14. 如何将MySQL卸载干净?
  15. 人工智能--学术会议排名
  16. 安卓手机刷linux超频内核,内核超频教程
  17. R语言解读多元线性回归模型
  18. 网站微信扫码支付流程
  19. mac下后端开发常用软件
  20. 第九周项目六--三色球问题

热门文章

  1. 灌浆料的弹性模量计算_灌浆料技术手册.doc
  2. 2021年亚马逊测评是否是割韭菜项目?是一个不是一个靠谱的项目?到底赚钱吗?
  3. PATH环境变量的含义
  4. 365包包商城模式,一年12月带新包,月月带包
  5. Three.js三维城市可视化geojson建筑,外部公共面分离
  6. C语言——字母大小写转化小技巧
  7. php opcache配置,PHP Opcache 配置优化实战
  8. ConvergenceWarning: Liblinear failed to converge, increase the number of iterations. ConvergenceW
  9. 13种老人不适合带孩子_婆婆摔孩子三次,注意,这是13种老人不适合带孩子
  10. SuperSocket框架实现服务器和Winform客户端