在我的代码中,我正在搜索一个字符串并尝试与其一起打印它上面的两行。
我的命令输出到一个文本文件
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
。
有人可以帮助我使用命令(如果有的话)来获取搜索字符串上方的行吗?
这有效!
:)
@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