批处理 查找字符串

前言

findstr,全英文find string,意为“查找字符串”;

/b,全英文begin,意为“开始”;
/e,全英文end,意为“末端”;
/l,literally,意为“照字面地”;引申为“去正则表达式”。
/r,regular,意为“有规律的”;引申为“正则表达式”。
/s,subdirectory,意为“子目录”;
/i,ignore,意为“忽略”;引申为“忽略大小写”;
/x,exactly,意为“恰好地”;引申为“完全匹配”;(一开始意为不是这个单词,不过HAT确实高明——之所以以e为缩写,是因为前面有了end的缩写,所以以第二个字母x为缩写)。
/v,invert,意为“反转、使颠倒”(感谢doupip的单词提供);
/n,全英文number,意为“数字”;引申为“行号”;
/m,merely,意为“只是”;
/o,offset,意为“偏移”;
/p,print,意为“打印”;
/off[line],意为“脱机文件”;
/a,attribute,意为“属性”;
/f,file,意为“文件”;
/c,case,意为“把几个字加起来”;引申为“全部字匹配”;
/g,get,意为“获得”;
/d,directory,意为“目录”;
class,类。

实践

没有参数的时候

材料:

Hello World
Hello Boy
hello ,good man.
goodbye!
@echo off
findstr "man" a.txt

值得注意的是这个是区分大小写的;

也就是说:

@echo off
findstr "Man" a.txt

是查找不到结果的。

那么如何不区分大小写?

不区分大小写

@echo off
findstr /i "Man" a.txt

显示行数

@echo off
findstr /n /i "Man" a.txt

结果:

@echo off
findstr /n /i "Man" a.txt

再来介绍find:

@echo off
find /n "hello" a.txt


![](https://img2020.cnblogs.com/blog/1289794/202005/1289794-20200506143944844-867291616.png)

#### 查找那些文件中含有那些字符

@echo off
findstr /m /i "hello" *.txt


![](https://img2020.cnblogs.com/blog/1289794/202005/1289794-20200506144326394-1524166074.png)

#### 查找开头元素和末尾元素

@echo off
find /n "^hello" a.txt


@echo off
find /n "hello$" a.txt

看过正则的都明白,不解释了。

然后你要查找完全匹配的就是:
@echo off
find /n "^hello$" a.txt

查找不包含某个字符的行

使用 /v

@echo off
findstr /v /i "hello" a.txt

结果

G:\test>test.bat
goodbye!

当前目录及子目录下文件内容中包含某字符串的文件名

代码:

findstr /ms "专业" *.txt

复制代码

效果:
找出当前目录及子目录下文件内容中包含“专业”的文本文件,并只显示其文件名。

总结

未完结,明天后续

posted @ 2020-05-06 15:09  敖毛毛  阅读(4528)  评论(0编辑  收藏  举报