我有一个类似以下的系统日志文件:
</t>Processed 8 rows.<LF>
</t>Success: 8<LF>
</t>Skip: 0<LF>
</t>Error: 0<LF>
</t>Exceptions: 0<LF>
// other log details
</t>Processed 8 rows.<LF>
</t>Success: 6<LF>
</t>Skip: 1<LF>
</t>Error: 1<LF>
</t>Exceptions: 0<LF>
<\t>
是制表符,<LF>
是换行符。
我的工作需要创建一个dos批处理来检查这些文件,并采取措施(如果有Skip
)Error
或Exceptions
找到。
我想到的是,findstr
与之regular expression
一起使用来定位出现大小写失败的任何行,我已经测试了此正则表达式:
// Should be one line here
\t+Skip\:\s+([1-9]|[1-9][0-9])\n|
\s+Error\:\s+([1-9]|[1-9][0-9])\n|
\s+Exceptions\:\s+([1-9]|[1-9][0-9])\n
但是,findstr不接受正则表达式(\ t \ s \ n ...),所以我确实将其拆分为6个正则表达式:
findstr /rc:"Skip\:[ ]*[1-9]" %file%
findstr /rc:"Skip\:[ ]*[1-9][0-9]" %file%
findstr /rc:"Error\:[ ]*[1-9]" %file%
findstr /rc:"Error\:[ ]*[1-9][0-9]" %file%
findstr /rc:"Exceptions\:[ ]*[1-9]" %file%
findstr /rc:"Exceptions\:[ ]*[1-9][0-9]" %file%
这项工作仅需要使用dos批处理(这是可悲的但不能更改),仅通过findstr语法可以采取任何方法吗?谢谢
findstr
所有匹配的案例中只有一个
findstr /r /c:"Skip: *[1-9]" /c:"Error: *[1-9]" /c:"Exceptions: *[1-9]" input.txt
findstr
传递了两个命令。第一个提取所需的行,第二个搜索问题条件
findstr /l "Skip: Error: Exceptions:" input.txt | findstr /r /c:": *[1-9].*"
第一个选项更快,因为它只涉及一个命令。第二种选择是较少冗余,并且不太容易键入错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句