gpt4 book ai didi

batch-file - 批量计数 findstr 结果为/f

转载 作者:行者123 更新时间:2023-12-05 08:43:13 25 4
gpt4 key购买 nike

我有一个 apache.log 文件。我正在尝试制作一个批处理文件以计算登录总数。基本上是几行。
我最初的想法是设置一个变量 results=0 ,每当 findstr 命令得到一个结果时,我得到 +1 到变量值,最后显示该值。不知道这是否是正确的思维方式。
到目前为止,我的印象是 for/f 命令可能是关键,尽管我从未使用过它,所以很多部分我都不清楚。
这是 .log 文件行的示例

67.195.112.96 - - [22/Feb/2010:00:06:03 +0200] "GET /www/kurpiai/dalyviai/?did=118 HTTP/1.0" 200 41119 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)"  

到目前为止,我的尝试如下:

findstr ^[1-9] apache.log  
for /f %%G in ('findstr ^[1-9] apache.log') do echo result %%G

现在我明白,在这种情况下,%%G 值会被每个 findstr 结果替换。有了这个,我得到了匹配 findstr 的每一行的回声,然后是每个 ip 地址。为什么?
我相信也许不知何故我可以使用 %%G 值每次都更改的事实来设置我自己的变量。为什么%%G会得到一个准确的ip值?
或者我错了,我根本不需要 for/f 来完成这项任务?

最佳答案

我会说你不知道。只需将您的 findstr 命令与 DOS 样式 wc -l 结合起来:

findstr "^[1-9]" abc.txt | find /v "" /c

第一部分选择符合您意图的行,第二部分计算 (/c) 那些不匹配的行(即全部)。

编辑:
如果您需要变量中的结果:

for /f %%a in ('findstr /R "^[1-9]" abc.txt ^| find /c /v ""') do set "count=%%a"

关于batch-file - 批量计数 findstr 结果为/f,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com