Batch file Windows FindStr用于搜索字符串和匹配行
我在使用FIND或FINDSTR命令查找日志文件中的特定字符串并返回其输出时遇到了一些问题,其中匹配字符串上有一行,下有一行 到目前为止,这是我唯一尝试过的命令。我试图在网上搜索,但找不到任何有用的东西 findstr/n“检测到网络问题”c:\Log.txt 示例日志数据(log.txt): 1371524155 2013年6月18日星期二10:55:55 1371524160 2013年6月18日星期二10:56:00 1371524165 2013年6月18日星期二10:56:05 检测到网络问题 1371523243 2013年6月18日星期二10:40:43 1371523248 2013年6月18日星期二10:40:48 1371523253 2013年6月18日星期二10:40:53 期望输出: 1371524165 Tue Jun 18 10:56:05 2013 NETWORK ISSUE DETECTED 1371523243 Tue Jun 18 10:40:43 2013 1371524165 2013年6月18日星期二10:56:05 检测到网络问题 1371523243 2013年6月18日星期二10:40:43 谢谢你的帮助Batch file Windows FindStr用于搜索字符串和匹配行,batch-file,cmd,findstr,Batch File,Cmd,Findstr,我在使用FIND或FINDSTR命令查找日志文件中的特定字符串并返回其输出时遇到了一些问题,其中匹配字符串上有一行,下有一行 到目前为止,这是我唯一尝试过的命令。我试图在网上搜索,但找不到任何有用的东西 findstr/n“检测到网络问题”c:\Log.txt 示例日志数据(log.txt): 1371524155 2013年6月18日星期二10:55:55 1371524160 2013年6月18日星期二10:56:00 1371524165 2013年6月18日星期二10:56:05 检测到
谢谢。老问题,但我刚找到
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=[]" %%i in ('type test.txt^|find /n "NETWORK ISSUE DETECTED"') do (
set /a a=%%i-1
set /a b=%%i+1
for /f "tokens=1,* delims=[]" %%j in ('find /n /v "" test.txt^|findstr /l "[!a!] [%%i] [!b!]"') do echo %%k
echo/
)
其工作方式:对线路编号,查找“检测到网络问题”的线路及其线路编号;查找并打印行[linenumber-1],[linenumber],[linenumber+1]嗨,有人能帮我吗?谢谢:)我也在找同样的东西……只是我想要这期杂志的下10行。我将尝试添加DOS标记,看看是否有帮助。我在
findstr
文档中没有看到任何信息表明这是可能的,我也没有看到。没有人说findstr
支持此功能,这可能是您无法在此处获得答案的原因。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=[]" %%i in ('type test.txt^|find /n "NETWORK ISSUE DETECTED"') do (
set /a a=%%i-1
set /a b=%%i+1
for /f "tokens=1,* delims=[]" %%j in ('find /n /v "" test.txt^|findstr /l "[!a!] [%%i] [!b!]"') do echo %%k
echo/
)