0

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

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

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 2013 年 6 月 18 日星期二 10:56:05
检测到网络问题
 1371523243 2013 年 6 月 18 日星期二 10:40:43

感谢您的帮助。

谢谢你。

4

1 回答 1

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]

于 2015-01-22T19:37:51.100 回答