如何计算日志文件中与 windows 批处理脚本中的 pattern/RegEx 匹配的变量的出现次数
How to count the occurrence of a variable in log file matching a pattern/RegEx in windows batch script
我正在尝试存储一个值的出现次数以计数变量。
set ATTR_TO_VERIFY=W10SBRS
for /F "tokens=*" %%N in ('findstr /r "^<.*^>.*%ATTR_TO_VERIFY%.*:" lofile.log ^| find /v "" /c') do set "COUNT=%%N"
echo %COUNT%
但计数总是给我零值。
在评论中指出的正则表达式错误是造成问题的原因。
您也可以不使用 find /c
。要计算 findstr
命令结果中的行数,应执行以下操作:
set ATTR_TO_VERIFY=W10SBRS
for /F "tokens=*" %%N in ('findstr /n /r "<.*>.*%ATTR_TO_VERIFY%.*:" lofile.log') do set /a COUNT+=1
echo %COUNT%
FOR /F
会自动丢弃空行和以 ;
开头的行。解决这个问题的一种方法是将 /n
标志添加到 findstr
并让 findstr
在每个匹配行的开头添加行号。
我正在尝试存储一个值的出现次数以计数变量。
set ATTR_TO_VERIFY=W10SBRS
for /F "tokens=*" %%N in ('findstr /r "^<.*^>.*%ATTR_TO_VERIFY%.*:" lofile.log ^| find /v "" /c') do set "COUNT=%%N"
echo %COUNT%
但计数总是给我零值。
您也可以不使用 find /c
。要计算 findstr
命令结果中的行数,应执行以下操作:
set ATTR_TO_VERIFY=W10SBRS
for /F "tokens=*" %%N in ('findstr /n /r "<.*>.*%ATTR_TO_VERIFY%.*:" lofile.log') do set /a COUNT+=1
echo %COUNT%
FOR /F
会自动丢弃空行和以 ;
开头的行。解决这个问题的一种方法是将 /n
标志添加到 findstr
并让 findstr
在每个匹配行的开头添加行号。