在 Windows 批处理脚本中打印搜索字符串上方的行

问题描述 投票:0回答:1

在我的代码中,我正在搜索一个字符串并尝试与其一起打印它上面的两行。

我的命令输出到一个文本文件

file.txt
,其中包含三个不同密钥对的多个序列。

例如:

Principle: principle name 
profile:profile name
Authadd:CRT,DLT,PASSID
Principle: principle name 
profile:profile name
Authadd:CRT,CHG,PASSID
Principle: principle name 
profile:profile name
Authadd:CRT,INQ,PASSID
Principle: principle name 
profile:profile name
Authadd:CRT,PASSID

Authadd
是三个条目的每个序列中的最后一个。

AUTHADD
有很多像
CRT,DLT,CHG,PASSID,SETALL
这样的值,我们只需捕获具有
CRT
DLT
的条目并打印上面两行,例如
Principle
Profile
值。

我没有看到任何 Windows 批处理脚本的命令或代码来获取搜索字符串上方的行;就像 Unix 中的

grep -a2

有人可以帮助我使用命令(如果有的话)来获取搜索字符串上方的行吗?

windows batch-file
1个回答
0
投票

这有效!

:)

@echo off
setlocal EnableDelayedExpansion

rem Create a "new line" (CR+LF) character pair:
for /F %%r in ('copy /Z "%~F0" NUL') do set ^"\n=%%r^
%Don't remove this line%
^"

rem Set the value to search for
set "search=DLT"

rem Lines before:      2                1             Base line
findstr /R ".*!\n!.*!\n!.*%search% .*!\n!.*%search% .*%search%" test.txt
© www.soinside.com 2019 - 2024. All rights reserved.