我在使用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
感谢您的帮助。
谢谢。
答案 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]
这些行