请大神指导从大日志文件中统计关键字次数的办法

  1. awk ‘NR==FNR{a[$0]=1;next}{if($0 in a)b[$0]++}END{for (i in b)print i,b[i]}‘ filea fileb | sort
  2. 文件A中有若干行数据,每行为一个关键字
    文件B为大日志文件,大小为10G以下

    想着能够统计出文件A中每个关键字在B中的出现次数,例如
    行1,3
    行2,10
    行3,100
    。。。。。

    最笨的办法是逐行读入后用grep,但是太费时间,有没有只打开一次B文件,就能把A中所有行都统计出来的办法呢?

    1. aaa 3
    2. bbb 3
    3. ccc 4
    4. ddd 2
    5. 给个大概的思路你,因为不知道你的文本时怎样的,所以没考虑边界问题,自己根据实际情况改一下吧~

      awk ‘ARGIND==1{a[$0]}ARGIND==2{for(i in a)if($0~i)a[i]++}ARGIND==3{printf "%s,%d\n",$0,a[$0]}‘ a b

原文地址:https://www.cnblogs.com/liliuguang/p/9541243.html

时间: 2024-10-03 02:24:44

请大神指导从大日志文件中统计关键字次数的办法的相关文章

hdu 1008为何不对?求大神指导!

/*#include<iostream> using namespace std; int main(){ int n; while (cin >> n){ if (n == 0) break; else if (n > 0 && n < 100){ int sum=0, max,min; int *f = new int[n]; for (int i = 0; i < n; i++) cin >> f[i]; max = min =

新人迷茫,求大神指导

毕业快半年,工作还算稳定.但是作为新手有点迷茫,求各路大神指导. 1.工作上使用的是c#/net,web开发,想学点新东西但是因为工作上用不到怕学完就忘了,而且也怀疑学习这些新东西的价值,比如python.之前实习学过mybaties,因为换工作没用,已经忘得差不多了.才有了这种迷茫想法.也有不学东西就等着做码农的想法,怎么破. 2.程序猿有必要掌握多门语言吗?工作上大部分只会用到一种语言,多个技能多口饭,但是这个学习成本值得付出吗? 3.我不是计算机专业,对编程原理,算法,软件工程的概念都不清

删除大日志文件中的某段数据

using System; using System.IO; using System.Linq; using System.Text; namespace TestMultyConsole2 { public class LocalFileHelper { /// <summary> /// 删除大日志文件中的某些数据 /// </summary> /// <param name="filePath">源文件路径</param> ///

jstack Dump日志文件中的线程状态

jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) 暂停,Suspended 对象等待中,Object.wait() 或 TIMED_WAITING 阻塞,Blocked(重点关注)   停止,Parked 下面我们先从第一个例子开始分析,然后再列出不同线程

将PHP错误输入到日志文件中

(LAMP)禁止客户端浏览器显示PHP代码错误,将错误信息保存到日志文件中:在php配置文件中找到php.ini(如在Centos6.7下的/etc/php.ini中),设置 display_errors = Off //不允许在浏览器中显示错误信息 log_errors = On //将错误信息输入到log文件中 error_log = /var/www/html/php_errors_log//指定错误日志位置找到apache的配置文件http.conf(如在Centos6.7下的/etc/

log4j:特定类的日志输出到指定的日志文件中

问题描述:我有一个类foo.bar.Baz,我想让Baz这个类的日志输出到指定的日志文件中,其它的就使用默认的配置. log4j.rootLogger=ERROR, logfile log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.datePattern='-'dd'.log' log4j.appender.logfile.File=log/radius-prod.log

当日志文件中的时间与主机时间不同步时,怎么监控每隔五分钟检测一次日志文件是否出自按某个关键字?

今有需求:需要监控每隔五分钟检测一次日志文件是否出自按某个关键字.利用过滤全部的日志信息 虽然可以过滤出来关键字告警,但是修复后,依然还是会报警,存在局限性,所以需要使用以下办法来实现需求. 本想循环获取5分钟内的时间戳,然后从日志文件中grep这个时间端的信息,然后再获取关键字,但是通过查看日志文件发现时间戳与主机时间不同步,所以,这种方法不可取.那么怎么获取最近五分钟的日志信息,再过滤关键字呢?思索了很久,又有了新思路.将现在的文件日志重定向到一个新的文件里面 cat /var/log/xx

超大文件中查找关键字

一个有10亿条记录的文本文件,已按照关键字排好序存储.请设计算法,可以快速的从文件中查找指字关键字的记录. 因为已经排好序了,可以使用 二分查找方法检索. 又因为文件过于庞大,可以将文件File分成1000份子记录集即读入10000次,每次读入10亿/10000条记录: 每次 读入一次 10亿/10000 条记录时,记作,将其关键字保存于Records数组中 , 当读入一个子记录集时,说明关键字key>=Records[0],故只需将关键字key与Records[i]最后一条记录关键字key'比

读取一个文件,给定一个字符串,判断这个字符串在文件中出现的次数

读取一个文件,给定一个字符串,判断这个字符串在文件中出现的次数,面试笔试经常遇到的问题 public class CountStringTest { public static void main(String[] args) { try { //统计E盘下面test.txt中的q字符出现的次数 System.out.println("E盘下面test.txt中的q字符出现的次数为:"); System.err.println(count("E:\\test.txt"