余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

1.4Windows之DOS命令基础篇-学习find+findstr命令

xiyangw 2023-05-14 11:53 10 浏览 0 评论


1.4Windows之DOS命令基础篇-学习find+findstr命令

学习要点:

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


/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 word" x.y' 在文件 x.y 中寻找 "hello" 或

"word" 。 'FINDSTR /C:"hello word" x.y' 在文件 x.y 寻找 "hello word"。


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

Strings 是要查找的内容。

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

例1

findstr "abc" d:\abc.txt

在123.txt中查找包含有“abc”这三个字符串的行


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

例2

findstr /i "ABC" d:\abc.txt

在123.txt中查找包含有“ABC”这三个字符的行,且不区分大小写


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

例3

findstr /r "a B" d:\abc.txt

在123.txt中查找包含有 “a”或“B”的行,查找的多个字符串间用空格隔格开


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

例4

findstr /s /i "ABC" D:\abc\*.txt

在D:\abc目录和所有子目录中的txt文件中搜索字符串"ABC"(不区分字母大小写)


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

例5

findstr /c:"世界" D:\abc\*.txt

此参数多用于查找含有空格的字符串。

★在使用 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 .* 123.txt 
或 
findstr ".*" 123.txt

在文件123.txt中查找任意字符,包括空行

例7

findstr ac* 123.txt

在文件123.txt中查找出现一个“a”字符串,以及a后面出现过0次或者任意次c的字符行

例8

findstr ak5* 123.txt

在文件123.txt中查找出现一个“ak”字符串,以及ak后面出现过0次或者任意次5的字符行


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

例9

findstr "^step" 123.txt

?在文件123.txt中查找行首为step字符串的行

例10

findstr "step#34; 123.txt

在文件123.txt中查找行尾为step字符串的行

例11

findstr "^step#34; 123.txt

在文件123.txt中查找行首为step,且行尾也为step的行,即step独自一行。


● 字符集规则,即[class]

①表示含有集里的任意一个字符的即匹配。

②该字符集里的元素可以是字母和数字和一般的半角字符,如:}{ ,.][等,但双引号"不被识别。不能是汉字, 汉字不被正确解释(汉字不是ASCII码)。

如果在字符集内插入通配符和重复符号,即"[.*]"将会把. 和 *视为普通字符,没有通配和重复的含义。

例12

findstr "[0-9]" 123.txt

在文件123.txt中查找数字0-9的任意之一的行

例13

findstr "[a-zA-Z]" 123.txt

在文件123.txt中查找包括任意字母行

例14

findstr "[abcezy]" 123.txt

在文件123.txt中查找包括a b c e z y其中任意一字母的行

例15

findstr "[a-fl-z]" 123.txt

在文件123.txt中查找小写字符a到f 或l到z的任意一字母的行

例16

findstr "M[abc][123]Y" 123.txt

在文件123.txt中查找可以匹配 Ma1Y , Mb1Y, Mc1Y的行


● 减法规则,即[^class]

例17

findstr "[^0-9]" 123.txt

如果是纯数字的行便过滤掉,例如12345这样的字符串被过滤,Ma1Y 这样的形式则过滤不了。

注意,纯数字的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!

例18

findstr "[^a-z]" 123.txt

如果是纯字母的行便过滤掉,例如abcd这样的字符将被过滤,如果是abcd123这样的形式则过滤不了

注意,纯字母的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!

例19

findstr "[^add]" 123.txt

过滤仅含有由a d d三个字母组成的纯字母字符串的行

注意,仅含有由a d d三个字母组成的纯字母字符串的行不能有空格,不论行首行尾或者是行中都不能有空格,否则过滤失败!

例20

findstr "[^echo]" 123.txt

过滤仅含有由e c h o 四个字母组成的纯字母字符串的行。


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

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

该规则是匹配类似单个英文单词的。

例21

findstr "\<echo" 123.txt

匹配含有以echo为前缀的字符串的行

例22

findstr "echo\>" 123.txt

匹配含有以echo为后缀的字符串的行

例23

findstr "\<end\>" 123.txt

这里是用来精确查找单词,仅查找单词end的行


● 转义符 \把表达式中的特殊字符(元字符)转化为普通字符

常见写法:

\.

\*

\\

\[

\]??

\-

例24

findstr "\.abc" 123.txt

在文件123.txt中查找可以匹配“.abc”字符串的行

这里\.是把.给转义了。

例25

findstr "1\\" 123.txt 或findstr "1\\\\" 123.txt

在文件123.txt中查找可以匹配“1\”字符串的行

这里\\是把\给转义了。

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

系列上一篇请看1.3Windows之DOS命令基础篇-学习md+rd+ren+move命令

#dos命令#

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: