写一个正则,统计出一个文件中某一段文字出现了多少次。
发布网友
发布时间:2022-04-22 21:18
我来回答
共3个回答
热心网友
时间:2023-11-17 02:32
你要查找的文字是固定的,就不需要正则了。
如果是 Linux,用一个命令就能统计出来
grep "GET /CI/system/application/controllers/tongji.php" access.log |wc -l
Windows 的话,没这么方便。可能得自己写个小脚本。
也可以装个 Cygwin,就可以用 Linux 的命令了。
如果不是自动统计的话,用个文本编辑器,查找一下字符串也就出结果了。
补充:
我看了你给我发的消息,找不到路径是因为 windows 没有 grep 命令。
grep 是 Linux/Unix 的命令。
Windows 可以装 Cygwin 模拟 Linux 环境。
Cygwin 的安装程序可以从这儿下载:
http://www.cygwin.com/
如果还是不行,给你一个VBScript的程序(Windows的脚本)
Function grep(sSearch, sFileName)
SET FSO = CreateObject("Scripting.FileSystemObject")
SET FP = FSO.OpenTextFile(sFileName, 1, FALSE)
If Err.Number <> 0 Then
WScript.Echo ("Error " & CStr(Err.Number) & " " & Err.Description)
EXIT Function
End If
i = 1
count = 0
Do Until FP.AtEndOfStream
sLine = FP.ReadLine
If sLine<>vbNull Then
Z = InStrRev(sLine, sSearch)
If Z>0 Then
'WScript.Echo i & " : " & sLine
count = count + 1
End If
End If
i = i + 1
Loop
grep = count
End Function
Set args = WScript.Arguments
count = grep(args(0), args(1))
WScript.Echo "Total Count = " & count
保存成 grep.vbs,放在系统环境变量PATH的某个路径下,或者是当前路径,
然后执行
grep "GET /CI/system/application/controllers/tongji.php" access.log
也能出结果。
热心网友
时间:2023-11-17 02:33
用软件Replace Pioneer可以办到。支持正则表达式,而且同时支持多个项目一起统计,每个统计还可以看明细。
详细步骤:
1. ctrl-o打开待处理的日志文件access.log
2. 打开Tools->Pattern Counter菜单
3. 点击Clear清除缺省的统计项,点击Add添加
* 在Name输入"我的统计1"
* 在Pattern输入:
"GET /CI/system/application/controllers/tongji.php"(不带双引号)
4. 去掉Regular Exp前面的勾,点击Count即得出总数。
热心网友
时间:2023-11-17 02:33
# Ruby one-liner
ruby -ne "i=0; i=i+1 if {GET /CI/system/application/controllers/tongji\.php}; puts i" access.log
或者自己写你自己PHP的呀,太简单了...
<?php
$i=0;
$fh = fopen("access.log");
while ($line = $fh->readline()) {
if (preg_match($line, /GET\s?\/CI\/system\/application\/controllers\/tongji\.php/i))
{GLOBAL $i++};
}
echo $i;
?>