zoukankan      html  css  js  c++  java
  • awk词频统计功能

    [root@test88 ~]# vim word_freq.sh
    
    #!/bin/bash
    if [ $# -ne 1 ];then
        echo "Usage: $0 filename";
        exit -1
    fi
    
    filename=$1
    
    egrep -o "[[:alpha:]]+" $filename | awk '{count[$0]++}END{printf("%-14s%s
    ","Word","Count");for (ind in count){ printf("%-14s%d
    ",ind,count[ind]);}}'
    
    
    [root@test88 ~]# sh word_freq.sh test.txt 
    Word          Count
    test          1
    oldboy        1
    liyong        1
    
    
    #egrep -o 表示只打印匹配到的字符,由换行符分割
    #是正则表达式里的单词边界符,位于能构成单词的字符(字母数字下划线)和不能构成单词的字符之间
    #比如一段文本:
    [root@test88 ~]# vim boundary.txt
    
    peter 2is learning linux.
    
    [root@test88 ~]# egrep -o  "[[:alpha:]]+" boundary.txt 
    peter
    is
    learning
    linux
    
    [root@test88 ~]# egrep -o  "[[:alpha:]]+" boundary.txt 
    peter
    learning                 #is没匹配出来
    linux
    
    #显然单词边界的作用在于先划定一段区域,从非单词部分开始到非单词部分结束,然后看区域内容是否匹配。从而能保证连续的一段内一定全是字母,没有数字或者下划线。通常写单词都是一个单词空一个,如果单词内出现数字或下划线就不认为是单词。如果不加实际上匹配的是一串连续字母。
    
    #count是一个关联数组,count[$0]表示索引为$0的值,当使用count[$0]++的时候,count[$0]的值默认为0的整型,而且这个值是变化的,索引每重复一次,值就加一。
    
  • 相关阅读:
    layui动态修改select的选中项
    ES6数组新增方法
    A Realtime BigData Dashboad
    Spark Streaming
    使用Converter实现控件的动态显隐
    Mysql 使用mysqldump进行备份与还原
    大型Java进阶专题(六) 设计模式之代理模式
    HTML开发之--marquee标签
    iOS开发之--instancetype和id
    请求处理常见tag语法
  • 原文地址:https://www.cnblogs.com/Peter2014/p/7596128.html
Copyright © 2011-2022 走看看