bat知识点8_findstr

原创 2016年08月30日 17:41:15


1.概述
在文件中寻找字符串。


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"。


findstr默认为“正则表达式模式”,加上/r参数也是“正则表达式模式”(换言之,/r参数有点多余)。
加上/l参数后,findstr转换为“普通字符串模式”(其实find就是这种模式、且只有这种模式)。


正则表达式的快速参考:
.        通配符: 任何字符
*        重复: 以前字符或类出现零或零以上次数
^        行位置: 行的开始
$        行位置: 行的终点
[class]  字符类: 任何在字符集中的字符
[^class] 补字符类: 任何不在字符集中的字符
[x-y]    范围: 在指定范围内的任何字符
\x       Escape: 元字符 x 的文字用法
\<xyz    字位置: 字的开始
xyz\>    字位置: 字的结束


2.实例
(1)findstr默认是区分大小写的,要想得到不区分大小写的结果,可以使用/i
a.txt-----------
Hello World
Hello Boy
hello ,good man.
goodbye!


执行1:
findstr "hello" a.txt
结果1:
hello ,good man.


执行2:
findstr "Hello" a.txt
结果2:
Hello World
Hello Boy


执行3:
findstr /i "Hello" a.txt
结果3:
Hello World
Hello Boy
hello ,good man.


(2)显示要查找的字符具体在文本哪一行
执行1:
findstr /n /i "hello" a.txt
结果1:
1:Hello World
2:Hello Boy
3:hello ,good man.


执行2:
find /n "hello" a.txt
结果2:
[3]hello ,good man.


注意:以上输出的冒号(:)和中括号([])


(3)查找包含了指定字符的文本
执行1:
findstr /m /i "hello" *.txt
结果1:
a.txt


注意:由于加上了/m参数,所以只列出包含指定字符的文件名。


(4)查找以指定字符开始或结尾的文本行
b.txt-----------
good hello
你好 hello world
Hello World
Hello Boy
hello ,good man.
goodbye!


执行1:
findstr /b /i "hello" b.txt
结果1:
Hello World
Hello Boy
hello ,good man.


注意:/b参数表示在开头查找。


执行2:
findstr  /i "^hello" b.txt
结果2:
Hello World
Hello Boy
hello ,good man.


注意:这里的正则表达式的元字符^表示“匹配行开始的位置”。


执行3:
findstr /e /i "hello" b.txt
结果3:
good hello


注意:/e参数表示在结尾查找


执行4:
findstr  /i "hello$" b.txt
结果4:
good hello


注意:这里的正则表达式的元字符$表示“匹配行结尾的位置”。


(5)查找完全匹配的行
执行1:
findstr /n /i "^goodbye!$" b.txt
结果1:
1:hello


执行2:
findstr /n /i /x "hello" b.txt
结果2:
1:hello


注意:/x参数表示打印完全匹配的行。


(6)查找不包含指定字符的行
执行1:
findstr /vni "hello" a.txt
结果1:
4:goodbye!


注意:/v参数表示只打印不包含匹配的行。


(7)用文本制定要查找的字符串
string.txt----------
^hello
world


c.txt------------
^hello
hello
hello hello
good hello
你好 hello 
Hello World
Hello Boy
hello ,good man.
goodbye!


执行1:
findstr /ig:string.txt c.txt
结果1:
hello
hello hello
Hello World
Hello Boy
hello ,good man.


从被忽略的“^hello”可以看出,在不加/l参数的前提下,用/g指定的搜索字符串中如果含有“元字符”,
则作为正则表达式使用,而不是作为普通表达式。


(8)只要求显示含有“far”这个单词的行
d.txt----------
far there
farthere
there
far
farm
farmer


执行1:
findstr "\<far\>" d.txt
结果1:
far there
far

2016年末,Android岗位BAT等大厂面试题知识点小结(一)Android基础部分

前段时间网上到处都传一个比较火的帖子,名叫《2016年未,腾讯,百度,华为,搜狗和滴滴面试题汇总》,自己也看了看,发现知识点挺广的,所以试着尽力小结了下,也算是自我学习。对于各种知识点的详细解释,我给...

RN8_React-Native知识点3之-基本控件(2)

RN8_知识点之-基本控件(2) Switch 必须使用onValueChange回调来更新value属性以响应用户的操作。 属性方法 1.      View...

[乐意黎转载]学习JavaScript你必须掌握的8大知识点!

一、JavaScript思维导图之的学习 二、 JavaScript思维导图之  三、JavaScript思维导图之 四、JavaScript思维导图之 五、J...
  • aerchi
  • aerchi
  • 2017年04月07日 11:52
  • 245

牛客网 8-11 网络基础 操作系统 编译与体系结构 30题知识点总结

1、代码编辑功能是编辑器提供的 代码规范检查也是编辑器提供的 分析代码问题是调试器提供的 编译器主要完成源码向目标代码的转化       2、RS-485分为两大类:两制线、四制线。其中...

掌握了这 8 个知识点,你就学会了 JavaScript

1 JavaScript思维导图之的学习 2 JavaScript思维导图之  3 JavaScript思维导图之 4 JavaScript思维导图之 5 J...

cocos2d-x基本知识点(8):菜单项

CCMenuItem是一个基类,它的子类可以加入CCMenu中

牛客网 8-13 网络基础 操作系统 编译与体系结构 30题知识点总结

1、  操作系统的主要功能是实现对系统硬件和软件资源的管理。   2、 强迫性中断和自愿性中断 强迫性中断由随机事件引起而非程序员事先安排, 硬件故障中断,程序性中断,外部中断及输入/输出中断是...

《分布式操作系统》知识点(8~14)二

(4)8在实时分布式系统中,事件触发和时间触发系统的含义是什么,给出一个例子,并说明为什么动态调度适合于事件触发系统,给出三种动态调度算法。P160、P166 答:事件触发:在一个事件触发的实时系统中...

牛客网 8-1 网络基础 操作系统 编译与体系结构 30题知识点总结

1、  系统内可以有无父进程的进程。  init进程没有父进程     2、死锁 定义 :在一个进程集合中,所有的进程都在等待只能由该进程集合中的其它进程才能引发的事件,这就是死锁 解释 :...

学习JavaScript你必须掌握的8大知识点!

一、JavaScript思维导图之的学习 二、    JavaScript思维导图之  三、JavaScript思维导图之 四、JavaScript思维导图之...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bat知识点8_findstr
举报原因:
原因补充:

(最多只允许输入30个字)