收录日期:2020/10/28 00:22:18 时间:2016/07/25 02:29:31 标签:专题技术讨论区
还是这个问题:
我在一个文件夹下:有许多的LOG文件:
log20100525-192536
log20100525-202552
log20100526-092516
.....

格式是logYYYYmmdd-hhmmss

想统计一下每天的LOG 数是多少

就不知道怎么实现啊?
ls | sed 's/log\(.*\)-.*/\1/' | sort | uniq -c
引用 1 楼 yifanernei 的回复:
C/C++ code
ls | sed 's/log\(.*\)-.*/\1/' | sort | uniq -c


兄弟,能说一下:'s/log\(.*\)-.*/\1/' 是啥意思不?
 sed 's/log\(.*\)-.*/\1/' //替换文件名为,log后,-之前的部分(也就是日期)
如log20100525-192536替换为20100525
这样再sort|uniq后就能排序按天统计
引用 3 楼 lylm 的回复:
sed 's/log\(.*\)-.*/\1/' //替换文件名为,log后,-之前的部分(也就是日期)
如log20100525-192536替换为20100525
这样再sort|uniq后就能排序按天统计

没有错,如果你的目录里有别的文件,可以把ls换成
ls log????????-*
或者在sed中先把不合规则的文件名排除一下
lz 的兄弟,我试了一下:报错:

sed -e ecpression #1.char17 :unrerminated 's' command

可能是我的LINUX 的版本的问提吧,不好意思,还有没有其它的COMMAND?
ls   |grep log |wc -l 

ls log*| sed 's/log\(.*\)-.*/\1/' | sort | uniq -c
ls *log* |awk '{print substr($NF,4,8)}'|sort -n|uniq -dc
ls log* |awk '{print substr($NF,4,8)}'|sort |uniq -c
怀疑版本问题就把你的环境说出来嘛,这样也方便大家帮助你不是
// 其中: mydir 是你要统计的日志目录
// 编译后,放在和mydir 同级目录下运行

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
char line[32];
char tmpline[32];
char buf[64];
int  num = 0;
FILE *fp = NULL;


system("ls ./mydir > tmp.txt");
if (access("./tmp.txt",F_OK) == 0)
{
if((fp = fopen("./tmp.txt","r")) == NULL)
{
perror("open error");
return -1;
}

if(fgets(buf,sizeof(buf),fp))
{
num++;
strncpy(line,buf,11);
while(fgets(buf,sizeof(buf),fp))
{
strncpy(tmpline,buf,11);
if (strcmp(line,tmpline) == 0)
num++;
else
{
strcpy(line,tmpline);
printf("%s: %d\n",line+3,num);
num = 1;
}
}
}
}

return 0;
}
不好意思,修改了以下,好像可以了
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
char tmpbuf[64];
char buf[64];
char date[12];
int  num = 0;
FILE *fp = NULL;


system("ls ./mydir > tmp.txt");
if (access("./tmp.txt",F_OK) == 0)
{
if((fp = fopen("./tmp.txt","r")) == NULL)
{
perror("open error");
return -1;
}

if(fgets(buf,sizeof(buf),fp))
{
num++;
while(fgets(tmpbuf,sizeof(tmpbuf),fp))
{
if (strncmp(buf,tmpbuf,11) == 0)
num++;
else
{
snprintf(date,12,buf);
strcpy(buf,tmpbuf);
printf("%s: %d\n",date,num);
num = 1;
}
}
snprintf(date,12,buf);
printf("%s: %d\n",date,num);
}
}

return 0;
}


主席的应该可行!建议试下
用简单的脚本应该可以实现的,学些~!

如何根据几个坐标点绘制各种类型的标准曲线,并可根据X值计算Y值 webConfig 报错,怎么处理啊 在线等:广告控件的应用问题! 计数器的问题 你们最困难,最落魄的时候是怎么样的? linux下用什么语言和工具做网站最好? 数据库的恢复问题(棘手) ELF文件大小的计算!!!!! 软件企业管理的困惑。 计数器的问题 请问:希望用raw socket实现类似发送免费arp的功能,请达人相助,在线等 char指针的内容为什么被改变了? ???获得局域网主机列表(NT/98)??? 关于创建线程调用全局函数的问题,遇到内存异常增加! 急救!!在线等!! 怎样把用jbuilder创建的工程打包成可执行文件?然后怎样运行? 怎样把用jbuilder创建的工程打包成可执行文件?然后怎样运行? 请问:希望用raw socket实现类似发送免费arp的功能,请达人相助,在线等 # 与 = 有什么区别 死到临头了,换个地方问问,毕设求救,关于网页中获取链接的问题,高手拜托了~~~~~~~~ 叶子的离去是风的追求还是树的不挽留…… 关于case when 如何修复有阵列卡的Win2003操作系统 请教dde 请教dde ==null 与 is DBNull 差别在哪里? 怎样在两个多行列表框中找出完全匹配、部分匹配的数据行?急! 请问:Tomcat+Oracle+linux下如何设置tomcat的连接池?顶者有分 dephi到BCB的翻译 asp 虽然不算精通,但还算可以,想学asp.net,我应该如何学比较快?