Windows FindStr搜索字符串和匹配行

时间:2013-06-18 03:55:41

标签: batch-file cmd findstr

我在使用FIND或FINDSTR命令在日志文件中查找特定字符串并使用匹配字符串以及匹配行下方1行和1行返回其输出时遇到了一些问题。

到目前为止,这是我尝试的唯一命令。我试过在线搜索,但找不到任何有用的东西。

findstr / n“NETWORK ISSUE DETECTED”c:\ Log.txt

示例日志数据(Log.txt):

1371524155  Tue Jun 18 10:55:55 2013
1371524160  Tue Jun 18 10:56:00 2013
1371524165  Tue Jun 18 10:56:05 2013
NETWORK ISSUE DETECTED
 1371523243  Tue Jun 18 10:40:43 2013
1371523248  Tue Jun 18 10:40:48 2013
1371523253  Tue Jun 18 10:40:53 2013

欲望输出:

1371524165  Tue Jun 18 10:56:05 2013
NETWORK ISSUE DETECTED
 1371523243  Tue Jun 18 10:40:43 2013

感谢您的帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

老问题,但我刚发现它。

@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]

这些行