Bat脚本-在文件中查找多个字符串

概述

本文讲述的是对文本的内容进行检索,找到需要匹配的字符串并挑出对应字符串输出到新的文本中,实现文本内容过滤的效果。

背景

本人在开发的过程中,经常会打印一些 log 数据来监测系统是否运行正常,但是有时候 log 数据特别大,且有时候会有一些 log 和当前问题不相关,需要过滤掉,所以想写一个可以提取出我所需要信息的脚本来完成log 数据的提取。

需求

1、可以提取多个字符串内容;
2、可以输出到另外的文本中,不对原文件进行修改;

需求分析

根据这个需求,可以有多个方法实现,其实简单的就是对文本的内容进行查找,当文件小的时候,其实是可以使用 Notepad++ 这样的软件进行查找,但是 Notepad++ 是有大文件限制的,所以我的想法是通过 bat 脚本的方式进行处理。

需求实现

@echo off
rem 需要查找的第1个字符串
set str1=""
rem 需要查找的第2个字符串
set str2=""
rem 需要查找的第3个字符串
set str3=""
rem 需要查找的文件
set filename=""
rem 在当前脚本处查找1、2、3字符串并在输出到当前路径生成的 output.txt 文件
findstr /r "%str1% %str2% %str3%" %filename% > output.txt
pause

实现功能

1、可以查找多个字符串;
2、可以将查找到的字符串输出到新的文本文件;

缺点

1、查找的字符串不能含有空格;

使用示例

比如我当前有一个文本文件(test.txt)的内容如下:

test1
test2
test3
test4
test5
test6

而我需要查找“test1”和“test5”,则可以新建一个 txt 文件,输入修改后的脚本内容为

@echo off
rem 需要查找的第1个字符串
set str1="test1"
rem 需要查找的第2个字符串
set str2="test5"
rem 需要查找的文件
set filename="test.txt"
rem 在当前脚本处查找1、2字符串并在输出到当前路径生成的 output.txt 文件
findstr /r "%str1% %str2%" %filename% > output.txt
pause

然后保存为 find.bat 到 test.txt 文件的路径下,点击运行出现
Bat脚本-在文件中查找多个字符串_第1张图片
关掉运行窗口后,可以看到当前路径下多了一个output.txt 文件,打开后是只有“test1”和“test5”的内容
Bat脚本-在文件中查找多个字符串_第2张图片
由此完成文本的过滤。

总结

目前实现的脚本满足需求,就是每次都要填充内容,后面知道新的方法后再看看如果改进。

免责声明:本文内容含网络参考、作者编写等,内容版权归原作者所有,未经允许,禁止转载。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

你可能感兴趣的:(bat学习笔记,batch,bash,开发语言)