我想编写一个批处理脚本,该脚本应逐行读取文本文件并搜索关键字。
如果找到关键字,则应返回值0,否则应返回1。 像这样它应该继续增加值直到文件结束。 输出应该转到文件。
示例日志如下,
Website is available HTTP/1.1 200 OK
Website is available HTTP/1.1 200 OK
Website is available HTTP/1.1 200 OK
Website is available HTTP/1.1 200 OK
Website is available HTTP/1.1 200 OK
Website is available HTTP/1.1 200 OK
基本上我想计算网站失败的次数。所以,如果网站没问题,那么它应该返回值'0',如果它不是值'1'。
最后但并非最不重要的是,我想要网站失败的总次数。
答案 0 :(得分:3)
在Unix上
fgrep 'keyword' log.txt | wc -l
答案 1 :(得分:3)
对于Windows .bat:
FINDSTR /V /B /C:"HTTP/1.1 2" log.txt
将列出没有(/ V)以(/ B)文字(/ C :)字符串“HTTP / 1.1 2”开头的每一行。
由于HTTP成功代码在200块中(例如,203用于缓存命中),因此这将仅列出非成功响应。 FINDSTR确实有一些正则表达式支持,但它非常弱,(没有分组或替换,特别是),所以如果你想使用FINDSTR过滤掉多个响应代码,你必须链接它们,例如也过滤掉Auth失败:< / p>
FINDSTR /V /B /C:"HTTP/1.1 2" log.txt | FINDSTR /V /B /C:"HTTP/1.1 403"
答案 2 :(得分:0)
在DOS上,它将是以下行。将“FAIL STRING”替换为服务器死亡时所包含的任何行。
<强> FIND /C "FAIL STRING" log.txt
强>
如果有两行包含“FAIL STRING”
,则会输出如下内容---------- LOG.TXT:2
您还可以使用%ERRORLEVEL%来确定是否有任何失败。像这样:
<强> FIND /C "FAIL STRING" log.txt
强>
的 IF ERRORLEVEL 1 ECHO Everything is A-OK
强>
的 IF NOT ERRORLEVEL 1 ECHO There were failures
强>